任何熟悉Sublime Text的多光标功能的人都会认识到执行以下操作的模式:按下热键多次以选择光标下单词的多个示例,并为这些示例中的每一个自动创建新光标;然后同时编辑每个示例,e.例如,用另一个词或任何你想要的词替换当前的词。
vim可以通过plugin使用多光标功能。在使用这个插件之前,我想(作为一个新的vim用户)检查一下是否有一个更像vim的方法来完成同样的任务。
例如,我知道我可以使用:s
命令来执行搜索和替换(根据here指令),但这需要我(1)键入我想要替换的单词(或使用<C-r><C-a>
快捷方式),而不是简单地使用当前单词和(2)定义一个范围。也许这是原生的vim方式,也许(可能!还有一种方法我不知道。
什么是原生vim方式?
4条答案
按热度按时间pvcm50d11#
我使用
*
、gn
和.
进行更改。*
选择当前字(使用N
返回)gn
运动改变单词。例如cgnfoo<esc>
.
命令重复注意:如果你有很多更改,那么使用替换命令可能会更好。
有一个很好的Vimcasts插曲关于
gn
运动:Operating on search matches using gn。有关更多帮助,请参阅:
6fe3ivhb2#
您可以通过按
q<letter>
在Vim中录制宏。宏可以包含n
命令来搜索单词的下一个示例。您也可以在录制时进入插入模式(e.例如,使用具有诸如iw
的运动的c
命令来替换当前字)。按q
停止录制,然后按@<letter>
重播宏一次。在此之后,您可以使用@@
来重复宏,次数不限。w1e3prcc3#
在等待其他答案的同时,我将发布我在等待vimMaven回答的同时正在进行的实验:
将(
s
)从当前行(.
)替换到最后一行($
)(逗号表示行范围),使用<C-r><C-a>
组合将当前单词复制到命令中,然后使用gc
进行更改并确认,这样我就可以对每个示例单击yes/no,然后在完成足够的操作后退出。z9smfwbn4#
您可以使用此命令选择和更改单词。对于Vim的各种集成,它可能工作不同,但我使用它与VS代码,它改变了单词,当我按Enter时,它将进行更改。
:%s/old_word/newWord