我经常使用组合c-a-w
来更改Vim中的单词。
是否有类似的方法可以快速更改特定文件中该单词的所有其他出现?
答案 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>
表示按住控制键并按下R
和W
。
这会将光标下的单词复制到命令行。
请参见:help c_CTRL-R_CTRL-W
。
答案 2 :(得分:1)
用于替换所有匹配项的主要命令是:substitute
。不幸的是,作为一个Ex命令,它在普通模式下与单字替换(例如caw
)集成得不是很好:尽管您可以使用{{1}将先前替换的单词插入命令行},您仍然必须将其括在<C-R>"
中以强制进行整个单词匹配,并且还转义单词内的任何特殊字符。
也就是说,有些插件可以在该领域提供帮助。其中一个是我的ChangeGlobally plugin,它提供了\<...\>
的{{1}}替代方案,然后将更改(或删除)应用于同一行或整个缓冲区中的其他匹配项。 (插件页面上有其他插件的链接。)