任何熟悉Sublime Text多光标功能的人都会认识到执行以下操作的模式:多次按热键可选择光标下多个单词实例,并自动为每个实例创建一个新光标。然后同时编辑每个实例,例如用另一个词或任何你想要的东西替换当前的词。
多个游标功能可通过plugin用于vim。在使用该插件之前,我希望(作为一个新的vim用户)检查是否有更原生的类似vim的方式来实现相同的任务。
例如,我知道我可以使用:s
命令进行搜索和替换(按照here的说明),但这要求我(1)键入我要替换的单词(或使用<C-r><C-a>
快捷键来执行此操作),而不是简单地使用当前单词和(2)定义范围。也许这是本土的vim方式,也许(可能!)还有另一种我不知道的方式。
那么本机的vim方式是什么?
答案 0 :(得分:14)
我使用*
,gn
和.
进行更改。
*
选择当前字词(返回N
)gn
动作更改字词。例如cgnfoo<esc>
.
命令重复注意:如果您有许多更改,那么使用替换命令可能会更好。
关于gn
动议有一个很好的Vimcasts插曲:Operating on search matches using gn。
如需更多帮助,请参阅:
:h *
:h gn
:h .
答案 1 :(得分:2)
您可以按q<letter>
在Vim中录制宏。宏可以包含n
命令来搜索单词的下一个实例。您还可以在录制时进入插入模式(例如,使用带有c
等动作的iw
命令替换当前单词。按q
停止录制,然后按@<letter>
重播宏一次。之后,您可以根据需要使用@@
重复宏。
答案 2 :(得分:0)
在等待其他答案的同时,我会在等待vim专家回答时发布我正在试验的内容:
:.,$s/<C-r><C-a>/foobar/gc
使用{{替换(s
)当前行(.
)到最后一行($
)(用逗号表示行范围) 1}}组合将当前单词复制到命令中,然后使用<C-r><C-a>
更改确认,这样我就可以为每个实例点击是/否,然后在我做得足够的时候退出。