Vim重复在单词的末尾添加一些内容

时间:2012-05-19 17:07:32

标签: vim

在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中做了什么。

澄清要求:我希望能够使用任意移动命令跳转,直到我的光标位于标识符的某个位置,然后点击“。”重复附加后缀。上面的例子是一个特例。

3 个答案:

答案 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