在vim中,我经常发现自己想要在源代码中为标识符添加后缀,然后使用“。”在其他标识符上重复它。
即。改造:
foo bar baz faz
为:
foo_old bar_old baz_old faz_old
我希望能够做到:
ea_old<ESC>w.w.w.
而不是:
ea_old<ESC>wea_old<ESC>wea_old<ESC>wea_old<ESC>
换句话说,我希望将文字附加到单词的末尾,以在历史记录中显示为可重复的命令。有谁知道怎么做?
我能做到:
nmap <C-a> ea
创建一种稍微方便的方法来追加单词的结尾,但它只重复“a”。理想情况下,我希望能够重复整个“eaarbitrarytext”序列。
我安装了repeat.vim插件并修改了一下,但我真的不知道我在vimscript中做了什么。
澄清要求:我希望能够使用任意移动命令跳转,直到我的光标位于标识符的某个位置,然后点击“。”重复附加后缀。上面的例子是一个特例。
答案 0 :(得分:7)
电子 一 _old
ESC 电子 e 。 e 。应该适合你。
另一种可能的解决方案是在搜索和替换命令上使用c
标志:
:.s/\<[[:alnum:]]\+\>/&_old/gc
然后您只需按 y 确认每次更换。如果您要进行大量替换并希望手动确认每个替换,这将更快。另一方面,如果您想在行中的每个字词中添加_old
到,则可以删除c
:
:.s/\<[[:alnum:]]\+\>/&_old/g
答案 1 :(得分:5)
我的猜测是OP用一个非常简单的例子来说明一个更通用的问题,可以重新表述为“我想非常容易地重复一个任意大的命令序列”。
为此,有 q 命令。选择你喜欢的录音注册,说“q”,然后:
q q - 开始录制
(在这里做任何复杂的动作......)
q - 停止录音
@ q - 播放录音
由于我自己经常在编程时使用它,我最终将上面的动作分别映射到 F2 , F3 和 F4 在我的键盘上。这允许在真正的一键击中重复你的一组动作。在.vimrc:
nmap <F2> qq
nmap <F3> q
nmap <F4> @q
答案 2 :(得分:1)
对于这种特定情况,您可以使用搜索和替换:s/ /_old /g
。