如何在Vim中更改单词(及其所有其他出现的单词)

时间:2018-12-26 12:08:44

标签: vim

我经常使用组合c-a-w来更改Vim中的单词。

是否有类似的方法可以快速更改特定文件中该单词的所有其他出现?

3 个答案:

答案 0 :(得分:4)

为此目的,请使用gn选项,我的版本略有不同

" allows me to use a smarter cgn
nnoremap c* *<c-o>cgn
nnoremap c# #<C-o>cgn

现在,当您需要多次更改一个单词时,只要您不必更改太多单词,因为在这种情况下,经典替换会更好,只需按c*然后按“点- ->。”更改它的下一次出现。

如果您想了解gn可以给我们带来怎样的帮助,请看一下:Operating on search matches using gn (vimcasts)

答案 1 :(得分:2)

您可以尝试:

%s/<CTRL-R><CTRL-W>/NewWord/g

<CTRL-R><CTRL-W>表示按住控制键并按下RW。 这会将光标下的单词复制到命令行。

请参见:help c_CTRL-R_CTRL-W

答案 2 :(得分:1)

用于替换所有匹配项的主要命令是:substitute。不幸的是,作为一个Ex命令,它在普通模式下与单字替换(例如caw)集成得不是很好:尽管您可以使用{{1}将先前替换的单词插入命令行},您仍然必须将其括在<C-R>"中以强制进行整个单词匹配,并且还转义单词内的任何特殊字符。

也就是说,有些插件可以在该领域提供帮助。其中一个是我的ChangeGlobally plugin,它提供了\<...\>的{​​{1}}替代方案,然后将更改(或删除)应用于同一行或整个缓冲区中的其他匹配项。 (插件页面上有其他插件的链接。)