如何在 VI 编辑器中替换第 n 次出现的模式

如何在 VI 编辑器中替换第 n 次出现的模式

文件内容

This is a demo file
*******************
This is the 1st line the the the.
This is the 2nd line the the.
This is the third line the the.
This is the 5th line.
This is the 6th line.
This is the 7th line.
This is the 8th line.
This is the 9th line.
This is the 10th line.

第三行中有 4 个实例the

我只想将第三次出现的 更改theTHE

在 ex 模式下如果我输入

:s/the/THE/g

它会将全部改为theTHE那么如何将第三个“the”改为“THE”?

答案1

嗯,你可以使用选择第三行3然后使用交互模式(gc

:3s/the/THE/gc

你得到

replace with THE (y/n/a/q/l/^E/^Y)?

n(否) n y(是) q(退出)

答案2

将行中每第 N 个出现的 PATTERN 用 REPLACE替换

:%s/\(.\{-}\zsPATTERN\)\{N}/REPLACE/

仅将第三行中第 N出现的 PATTERN替换为 REPLACE。

:3s/\(.\{-}\zsPATTERN\)\{N}/REPLACE/

在您给出的示例中,只需使用以下命令。

:3s/\(.\{-}\zsthe\)\{3}/THE/

相关内容