Gau*_*nia 16 regex vim sed substitution
我看到了其他问题涉及找到第n次出现的单词/模式,但我找不到你如何实际替换vim中第n次出现的模式.有一种明显的方法可以对所有事件进行硬编码
:s/.*\(word\).*\(word\).*\(word\).*/.*\1.*\2.*newWord.*/g
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
Luc*_*tte 10
有关信息,
s/\%(\(pattern\).\{-}\)\{41}\zs\1/2/
Run Code Online (Sandbox Code Playgroud)
也可以取代第42次发生.但是,我更喜欢John Kugelman给出的更简单的解决方案 - 即使它不会限制在当前的路线上.
您可以使用多次搜索更简单地完成此操作.:s/pattern/repl/命令中的空模式表示替换最近的搜索结果.
:/word//word//word/ s//newWord/
or
:/word//word/ s/word/newWord/
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过执行多次重复此操作@:,甚至10@:可以多次重复该命令10次.
或者,如果我以交互方式这样做,我会做类似的事情:
3/word
:s//newWord/r
Run Code Online (Sandbox Code Playgroud)
这将在光标处找到第三次出现的单词,然后执行替换.
用REPLACE 替换每N 次出现的PATTERN。
:%s/\(\zsPATTERN.\{-}\)\{N}/REPLACE/
Run Code Online (Sandbox Code Playgroud)