vim - VIM:查找和替换单词的前N个出现

标签 vim vi

我正在编辑文件,我只想用另一个单词来更改一个特定的单词,但只适用于前N次出现。我尝试了多个命令

N :s/word/newword/

:%s/word/newword/count

我可以在Google上找到的其他命令。但是它们都不起作用。

编辑:: Vim命令是首选。但是也可以使用Vim脚本。我在vim脚本编写方面没有任何经验。

最佳答案

使用一次性录音可让您精确控制所做的更改:

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


请参见:help recording:help gn

另一种方法,使用:normal

:norm! /foo<C-v><CR>cgnbar<C-v><Esc>     <-- should look like this: :norm! /foo^Mcgnbar^[
11@:


请参见:help :normal:help @:

或者简单地:

:/foo/|s//bar<CR>
11@:

关于vim - VIM:查找和替换单词的前N个出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25840580/

相关文章:

windows - 如何从 PuTTY 粘贴到 Vim 8.0?

macos - 如何在 Vim for MacOS 中初始化 sparkup 插件?

unix - 在 vim 中打开与当前文件相同的文件夹中的文件

正则表达式替换 : '[A-Z]' ' to [A-Z ]' - I can' t preserve the letter in in the string

vim - 在 Vim 中移动到段落/句子末尾的最有效方法是什么?

Vim:如何在整个文件中删除相同的文本 block

vim - 终端 vim 未加载 .zshrc

regex - 是否可以更改 vim regexp 方言?

vim - 如何在vim中创建Ctrl+f和ctrl+shift+f?

regex - 在每行 vi/vim/sed 等上第一次出现