如何在替换命令的替换侧调用匹配方?

Mai*_*tor 0 regex vim replace

例如,要使用单个命令转换foo(a,b,c)foo(ax,bx,cx)您需要以下内容:

:s/[abc]/MATCHED_CHARACTERx/g
Run Code Online (Sandbox Code Playgroud)

这种替换的正确语法是什么?

Mic*_*per 6

使用\(...\)搜索模式中的转义括号,您可以标记要在替换模式中使用的部分.括号中的每个部分都可以通过访问\1, \2, \3....\0匹配整个搜索模式.

所以,对于你的例子,你可以使用

:%s/[abc]/\0x/g
Run Code Online (Sandbox Code Playgroud)

或者,更具体地说,

:%s/foo(\(.\),\(.\),\(.\))/foo(\1x,\2x,\3x)/g
Run Code Online (Sandbox Code Playgroud)

第二个模式只匹配foo(<any>,<any>,<any>)而不是所有出现的匹配a,b,c.