我经常想在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_替换搜索字符串的结尾.