什么是选择当前单词的多个实例并更改它们的vim方式?

时间:2015-05-08 18:29:02

标签: vim sublimetext2

任何熟悉Sublime Text多光标功能的人都会认识到执行以下操作的模式:多次按热键可选择光标下多个单词实例,并自动为每个实例创建一个新光标。然后同时编辑每个实例,例如用另一个词或任何你想要的东西替换当前的词。

多个游标功能可通过plugin用于vim。在使用该插件之前,我希望(作为一个新的vim用户)检查是否有更原生的类似vim的方式来实现相同的任务。

例如,我知道我可以使用:s命令进行搜索和替换(按照here的说明),但这要求我(1)键入我要替换的单词(或使用<C-r><C-a>快捷键来执行此操作),而不是简单地使用当前单词和(2)定义范围。也许这是本土的vim方式,也许(可能!)还有另一种我不知道的方式。

那么本机的vim方式是什么?

3 个答案:

答案 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>更改确认,这样我就可以为每个实例点击是/否,然后在我做得足够的时候退出。