Vim搜索和替换效率

AJ.*_*AJ. 6 vim replace

我经常想在vim中搜索和替换,如下所示:

:%s/<search_pattern>/<search_pattern>_foo/g
Run Code Online (Sandbox Code Playgroud)

有没有办法使这种语法更有效,以便我可以引用<search_pattern>替换值?我认为它类似于按组名称/号码反向引用,但我找不到任何关于此的文档.

pb2*_*b2q 13

使用该&字符表示替换中的匹配模式:

:%s/<search_pattern>/&_foo/g
Run Code Online (Sandbox Code Playgroud)

或者你可以使用\0,这是整个匹配模式的反向引用,因此可能更容易记住:

:%s/<search_pattern>/\0_foo/g
Run Code Online (Sandbox Code Playgroud)

看到 :help sub-replace-special

并且,感谢@kev,您可以在搜索字符串的末尾强制使用一个空模式,\zs替换为替换中的__foo_:

:%s/<search_pattern>\zs/_foo/g
Run Code Online (Sandbox Code Playgroud)

这意味着:用__foo_替换搜索字符串的结尾.

  • `:%s/<search_pattern>\zs/_foo/g`也可以. (3认同)