0

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

:s/[abc]/MATCHED_CHARACTERx/g

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

4

2 回答 2

6

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

因此,对于您的示例,您可以使用

:%s/[abc]/\0x/g

或者,更具体地说,

:%s/foo(\(.\),\(.\),\(.\))/foo(\1x,\2x,\3x)/g

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

于 2013-09-27T07:45:41.943 回答
4

the&是整个比赛的同义词,\0代表整个比赛。因此,您也可以&x在示例替换中使用。这也适用于许多其他工具,例如sed.

于 2013-09-27T07:57:21.440 回答