我想要做的事情是:
%s/Article/<h2>Article</h2>/gi
很不幸,每次我通过我的vim编辑器执行这个命令时,它都会显示:
结尾处有多余字符
为了解决上述问题,我执行了以下操作:
%s/\s*\r*$//
代码可以成功执行,但当我回到原始的搜索替换命令时,它再次显示“尾部字符”,并且不执行搜索和替换操作。
我在这里做错了什么?
我想要做的事情是:
%s/Article/<h2>Article</h2>/gi
很不幸,每次我通过我的vim编辑器执行这个命令时,它都会显示:
结尾处有多余字符
为了解决上述问题,我执行了以下操作:
%s/\s*\r*$//
代码可以成功执行,但当我回到原始的搜索替换命令时,它再次显示“尾部字符”,并且不执行搜索和替换操作。
我在这里做错了什么?
“尾随字符(trailing characters)”位于你的命令中,而不是你的文档中。
Vim认为你在 Article</
处结束了命令,然后将h2>/gi
视为替换命令的第三个参数。但这些字符并非全部适用于第三个参数,所以它会给出错误。
要解决此问题,你需要转义你的替换命令中的 /
字符。
%s/Article/<h2>Article<\/h2>/gi
substitute
命令中可以使用除斜杠以外的其他分隔符,因此您无需在模式中转义斜杠(例如 %s#Article#<h2>Article</h2>#gi
)。 - ib.另外,如果你经常需要在正则表达式中使用字面意义的斜杠(XML/HTML/UNIX文件路径),而不想担心每个实例都必须转义,可以使用其他定界符。例如,使用!代替/:
%s!文章!<h2>文章</h2>!gi
我很懒,这通常比手动转义斜杠更容易。