我正在编辑一个文件,我想只用另一个单词更改一个特定的单词,但仅限于前N次出现.我尝试了多个命令
N :s/word/newword/
:%s/word/newword/count
以及我可以在谷歌上找到的其他命令.但它们都不起作用.
EDIT :: Vim命令是首选.但也可以使用Vim脚本.我没有任何vim脚本编程经验.
rom*_*inl 17
使用一次性录音可以精确控制您所做的改变:
qq " start recording in register q
/foo<CR> " search for next foo
cgnbar<Esc> " change it to bar
q " end recording
11@q " play recording 11 times
Run Code Online (Sandbox Code Playgroud)
见:help recording
和:help gn
.
另一种方式,使用:normal
:
:norm! /foo<C-v><CR>cgnbar<C-v><Esc> <-- should look like this: :norm! /foo^Mcgnbar^[
11@:
Run Code Online (Sandbox Code Playgroud)
见:help :normal
和:help @:
.
或者干脆:
:/foo/|s//bar<CR>
11@:
Run Code Online (Sandbox Code Playgroud)
Cae*_*aek 11
虽然有点长,但你可以这样做:
:call feedkeys("yyyq") | %s/word/newword/gc
Run Code Online (Sandbox Code Playgroud)
替换前3次出现然后停止.您可以更改y
或更少或更少的替换数量.(也可以n
用来跳过一些)
说明:这会将y
键击输入到/c
替换命令的confirm选项中.
我不确定指定前N次出现,但我经常使用此命令:
:%s/word/newword/gc
Run Code Online (Sandbox Code Playgroud)
然后Vim要求确认每次出现,word
这样你就可以有选择地改变一些而不是其他的.