任何熟悉 Sublime Text 的多光标功能的人都会认识到执行以下操作的模式:多次按热键以选择光标下单词的多个实例,并自动为每个实例创建一个新光标;然后同时编辑每个实例,例如通过用另一个单词或任何您想要的单词替换当前单词。
通过 plugin 可在 vim 中使用多个光标功能。在使用该插件之前,我想(作为一个新的 vim 用户)检查是否有一种更原生的类似 vim 的方式来实现相同的任务。
例如,我知道我可以使用
:s
命令进行搜索和替换(按照此处的说明),但这需要我 (1) 输入我想要替换的单词(或使用 <C-r><C-a>
这样做的快捷方式),而不是简单地使用当前单词和 (2) 定义一个范围。也许这是 vim 的原生方式,也许(可能!)还有另一种我不知道的方式。
那么 vim 的原生方式是什么呢?
您可以通过按
q<letter>
在 Vim 中录制宏。宏可以包含 n
命令来搜索单词的下一个实例。您还可以在录制时进入插入模式(例如,使用 c
命令和 iw
等动作来替换当前单词)。按 q
停止录制,然后按 @<letter>
重播一次宏。之后,您可以使用 @@
多次重复宏。
在等待其他答案的同时,我将在等待vim专家回答的同时发布我正在尝试的内容:
:.,$s/<C-r><C-a>/foobar/gc
从当前行(
s
)替换(.
)到最后一行($
)(逗号表示行范围),使用<C-r><C-a>
组合将当前单词复制到命令,然后使用 gc
进行更改并确认,这样我就可以为每个实例点击“是/否”,然后在完成足够的操作后退出。
您可以使用此命令来选择和更改单词。它对于 vim 的各种集成可能会有所不同,但我将它与 VS code 一起使用,它会更改单词,当我按 Enter 时,它会进行更改。
:%s/old_word/newWord
viw
选择单词。Ctrl/Cmd+D
选择下一个,您将看到多个亮点。ESC
退出可视模式,您仍然会看到多个光标。ciw
或 i
修改多个。