【问题标题】:Search and replace in VIM results in trailing characters在 VIM 中搜索和替换导致尾随字符
【发布时间】:2011-10-06 13:36:40
【问题描述】:

这就是我想要做的:

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

不幸的是,每次我通过我的 vim 编辑器执行此命令时,它都会显示:

尾随字符

为了缓解上述问题,我执行了以下操作:

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

它执行成功,但是当我回到原来的搜索和替换命令时,它再次读取'尾随字符'并且不执行搜索和替换操作。

我在这里做错了什么?

【问题讨论】:

  • 考虑使用 \
    以避免替换文章

标签: linux vim command-line-arguments vi


【解决方案1】:

“尾随字符”在您的命令中,而不是您的文档中。

Vim 认为您在Article&lt;/ 处完成了命令,然后将h2&gt;/gi 视为替代命令的第三个参数。但这些字符并非对第三个参数都有效,所以它会给你错误。

要解决这个问题,您需要转义替代品中的 / 字符。

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

【讨论】:

  • 您可以在:substitute 命令中使用斜杠以外的分隔符,因此您不必在模式中转义/(例如%s#Article#&lt;h2&gt;Article&lt;/h2&gt;#gi)。
【解决方案2】:

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

%s!Article!&lt;h2&gt;Article&lt;/h2&gt;!gi

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多