在VIM中search和replace会导致结尾字符

这是我正在尝试做的事情:

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

不幸的是,每次我通过我的vim编辑器执行这个命令时,它都会说:

尾随的字符

为了缓解上述情况,我执行了以下操作:

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

并且它成功执行,但是当我回到原来的search和replace命令时,它再次读取“尾随字符”,不执行search和replace操作。

我在这里做错了什么?

“尾随字符”在你的命令,而不是你的文件。

Vim认为你在Article</完成了命令,然后把h2>/gi作为替代命令的第三个参数。 但是这些字符对于第三个参数并不全是有效的,所以它给了你错误。

为了解决这个问题,你需要在你的替身中逃避/角色。

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

此外,如果您经常需要在正则表达式(XML / HTML / UNIX文件路径)中使用文字正斜杠,并且不想担心每个实例都要转义,则可以使用不同的分隔符。 例如,使用! 代替 /:

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

我很懒,这通常比手动转义斜杠更容易。