Vim搜索和替换效率

Vim搜索和替换效率,vim,replace,Vim,Replace,我经常希望在vim中搜索和替换,如下所示: :%s/<search_pattern>/<search_pattern>_foo/g :%s/\u-foo/g 是否有办法使此语法更有效,以便我可以在replace值中引用?我认为这类似于通过组名/编号进行反向引用,但我找不到任何关于此的文档。使用&字符表示替换中的匹配模式: :%s/<search_pattern>/&_foo/g :%s/<search_pattern>\zs/_foo

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

:%s/<search_pattern>/<search_pattern>_foo/g
:%s/\u-foo/g

是否有办法使此语法更有效,以便我可以在replace值中引用
?我认为这类似于通过组名/编号进行反向引用,但我找不到任何关于此的文档。

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

:%s/<search_pattern>/&_foo/g
:%s/<search_pattern>\zs/_foo/g
请参见
:帮助子系统更换专用

而且,由于,您可以使用
\zs
,在搜索字符串的末尾强制使用一个空模式,以在替换中替换为uuuu foo\uuu:

:%s/<search_pattern>/&_foo/g
:%s/<search_pattern>\zs/_foo/g
:%s/\zs/\u-foo/g

这意味着:将搜索字符串的结尾替换为uu foo。

您可以对整个搜索模式使用
&
,也可以使用组匹配模式的一部分。使用

:%s/<search_pattern>/&_foo/g
您想将
面包和黄油的任何实例更改为
面包和黄油

:%s/\(bread\),\(butter\)/\1 and \2/g