vim select 当前单词的多个实例并更改它们的方法是什么?
What's the vim way to select multiple instances of current word and change them?
任何熟悉 Sublime Text 的多光标功能的人都会认出执行以下操作的模式:多次按下热键以 select 光标下的单词的多个实例,并自动为每个光标创建一个新光标那些实例;然后同时编辑每个实例,例如用另一个词或任何你想要的替换当前词。
vim 通过 plugin 可以使用多光标功能。在使用该插件之前,我想(作为新 vim 用户)检查是否有更原生的 vim 方式来完成相同的任务。
例如,我知道我可以使用 :s
命令进行搜索和替换(根据说明 here),但这需要我 (1) 输入我想要的词替换(或使用 <C-r><C-a>
快捷方式),而不是简单地使用当前单词和 (2) 定义范围。也许这是本机的 vim 方式,也许(很可能!)还有另一种我不知道的方式。
那么原生的vim方式是什么?
您可以通过按 q<letter>
在 Vim 中录制宏。宏可以包含 n
命令来搜索单词的下一个实例。您还可以在录制时进入插入模式(例如,使用 c
命令和 iw
等动作来替换当前单词)。按 q
停止录制,然后按 @<letter>
重播宏一次。之后,您可以使用 @@
重复宏,任意多次。
我使用 *
、gn
和 .
进行更改。
- Select 当前单词
*
(返回 N
)
- 用
gn
动作更改单词。例如cgnfoo<esc>
- 通过
.
命令重复
注意:如果您有很多更改,那么使用替换命令可能会更好。
有个不错的Vimcasts episode about the gn
motion: Operating on search matches using gn.
如需更多帮助,请参阅:
:h *
:h gn
:h .
在等待其他答案的同时,我将post在等待vim专家回答的同时进行实验:
:.,$s/<C-r><C-a>/foobar/gc
从当前行(.
)替换(s
)到最后一行($
)(用逗号表示行范围),使用<C-r><C-a>
组合键将当前单词复制到命令中,然后使用 gc
进行更改并确认,这样我就可以为每个实例点击 yes/no,然后在完成足够后退出。
任何熟悉 Sublime Text 的多光标功能的人都会认出执行以下操作的模式:多次按下热键以 select 光标下的单词的多个实例,并自动为每个光标创建一个新光标那些实例;然后同时编辑每个实例,例如用另一个词或任何你想要的替换当前词。
vim 通过 plugin 可以使用多光标功能。在使用该插件之前,我想(作为新 vim 用户)检查是否有更原生的 vim 方式来完成相同的任务。
例如,我知道我可以使用 :s
命令进行搜索和替换(根据说明 here),但这需要我 (1) 输入我想要的词替换(或使用 <C-r><C-a>
快捷方式),而不是简单地使用当前单词和 (2) 定义范围。也许这是本机的 vim 方式,也许(很可能!)还有另一种我不知道的方式。
那么原生的vim方式是什么?
您可以通过按 q<letter>
在 Vim 中录制宏。宏可以包含 n
命令来搜索单词的下一个实例。您还可以在录制时进入插入模式(例如,使用 c
命令和 iw
等动作来替换当前单词)。按 q
停止录制,然后按 @<letter>
重播宏一次。之后,您可以使用 @@
重复宏,任意多次。
我使用 *
、gn
和 .
进行更改。
- Select 当前单词
*
(返回N
) - 用
gn
动作更改单词。例如cgnfoo<esc>
- 通过
.
命令重复
注意:如果您有很多更改,那么使用替换命令可能会更好。
有个不错的Vimcasts episode about the gn
motion: Operating on search matches using gn.
如需更多帮助,请参阅:
:h *
:h gn
:h .
在等待其他答案的同时,我将post在等待vim专家回答的同时进行实验:
:.,$s/<C-r><C-a>/foobar/gc
从当前行(.
)替换(s
)到最后一行($
)(用逗号表示行范围),使用<C-r><C-a>
组合键将当前单词复制到命令中,然后使用 gc
进行更改并确认,这样我就可以为每个实例点击 yes/no,然后在完成足够后退出。