Search and replace in VIM results in trailing characters

Parijat Kalia picture Parijat Kalia · Jul 16, 2011 · Viewed 46.2k times · Source

This is what I am attempting to do:

%s/Article/<h2>Article</h2>/gi

Unfortunately, every time i execute this command through my vim editor, it says:

Trailing characters

To mitigate the above, I executed the following:

%s/\s*\r*$//

And it executes successfully, but when I go back to the original search and replace command, it again reads 'Trailing characters' and does not execute the search and replace operation.

What am I doing wrong here?

Answer

Merlyn Morgan-Graham picture Merlyn Morgan-Graham · Jul 16, 2011

The "trailing characters" are in your command, not your document.

Vim thinks that you finished the command at Article</, then considers h2>/gi as the third argument of the substitute command. But those characters aren't all valid for the third argument, so it gives you the error.

To solve this, you need to escape the / character in your substitute.

%s/Article/<h2>Article<\/h2>/gi