【问题标题】:Vim: Ignoring errors in a list of mapped substitutionsVim:忽略映射替换列表中的错误
【发布时间】:2012-02-11 09:27:24
【问题描述】:

我经常做一些正则表达式替换,因此我想映射一个键来轻松地做到这一点。但是,如果在文件中找不到要替换的正则表达式之一,我的键映射将因E486: Pattern not found 而停止,并且不会进行进一步的替换。例如。如果我的 vimrc 中的映射是

map <F12> :%s/spam/foo/<enter>:%s/ham/bar/<enter>:%s/eggs/baz/<enter>

我的文件中没有hameggs 不会被替换。是否有一个标志我可以放在替换上以忽略错误?我读过:help regex:help map 却没有找到任何有用的东西。

或者,有没有我想念的另一种更简单、更明显的方法来做到这一点?

【问题讨论】:

  • (如果您不附加 ge Birei 建议的标志,则可以保存最后一个 /:%s/spam/foo&lt;CR&gt; 如果您只想使用第二个分隔符,也一样删除某些内容(每行仅第一次出现)::%s/spam&lt;cr&gt;)
  • 我知道。我只是不喜欢有未闭合的斜线;)
  • 斜线不会成对出现:-)

标签: regex vim vi


【解决方案1】:

/e 标志添加到每个替换命令。它不显示错误消息并继续,就好像没有发生错误一样。这将是新的映射:

map <F12> :%s/spam/foo/e<enter>:%s/ham/bar/e<enter>:%s/eggs/baz/e<enter>

【讨论】:

  • 非常感谢,按照罐头上说的做。不知道我怎么错过了>.
【解决方案2】:

您可以在模式的末尾添加一个“标志”:

:%s/spam/foo/e

如果找不到 spam 并允许您继续,则不会出现错误。

:help flags

【讨论】:

    猜你喜欢
    • 2014-11-22
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 2011-07-29
    • 2021-12-15
    相关资源
    最近更新 更多