使用vim,如何在txt文件中找到一行中的两个单词并用一行中的三个单词替换它?

使用vim,如何在txt文件中找到一行中的两个单词并用一行中的三个单词替换它?,vim,Vim,例如,我需要在txt文件中找到像“Saw Saw”这样的双单词,并用像“Saw Saw”这样的三个单词替换它 我想我将使用:%s/pattern/replace/g txt文件中将有多个实例,因此我需要编写一些通用的或适用于不同单词的内容。一个可能的解决方案是: %s/\c\([Ss]aw\) \1/\1 \1 \1/g 其中\1是第一个捕获组\([Ss]aw\)的反向引用。要强制第二次和第三次使用小写,请在替换字符串中包含\l: %s/\c\([Ss]aw\) \1/\1 \l\1 \l\1

例如,我需要在txt文件中找到像“Saw Saw”这样的双单词,并用像“Saw Saw”这样的三个单词替换它

我想我将使用
:%s/pattern/replace/g


txt文件中将有多个实例,因此我需要编写一些通用的或适用于不同单词的内容。

一个可能的解决方案是:

%s/\c\([Ss]aw\) \1/\1 \1 \1/g
其中
\1
是第一个捕获组
\([Ss]aw\)
的反向引用。要强制第二次和第三次使用小写,请在替换字符串中包含
\l

%s/\c\([Ss]aw\) \1/\1 \l\1 \l\1/g

一种可能的解决办法是:

%s/\c\([Ss]aw\) \1/\1 \1 \1/g
其中
\1
是第一个捕获组
\([Ss]aw\)
的反向引用。要强制第二次和第三次使用小写,请在替换字符串中包含
\l

%s/\c\([Ss]aw\) \1/\1 \l\1 \l\1/g

如果在替换中使用&,则无需捕获组即可完成此操作。请注意,
\1
不仅用于替换字符串,还用于模式
\(saw\)\1
。呃,键入
saw
真的没那么糟糕,但我确实看到,现在如果在替换中使用&就可以不捕获组而完成此操作。请注意,
\1
不仅在替换字符串中使用,而且在模式
\(saw\)\1
中也使用。呃,键入
saw
确实没有那么糟糕,但我现在确实看到了这一点