如何在Vim中重复导航命令

时间:2017-09-26 00:37:00

标签: vim

。 key可用于重复上一个insert命令。但是,我们可能会做一些不属于插入的导航,但我们希望它重复。

想象一下这样的行:

// line of text
// line of text
line of text
line of text

insert命令用于放置两个正斜杠和一个空格。这可以重复使用。键。导航将向下导航一行,然后留下一些字符。那部分没有被捕获。关键命令。

我们如何实现此功能?我读过几年前在Vi中没有它,但我想知道它现在是否存在于最新版本的Vim中。

3 个答案:

答案 0 :(得分:3)

  1. qX,其中X是任何可写的registers(通常:选择任何小写字母)。
  2. 执行您想要录制的任何动作。
  3. 再次按q停止录制。
  4. @X(其中X是同一个寄存器)进行播放(计数次,如果与计数一起使用)。
  5. @@重播最近使用的宏(计数次)。
  6.   

    我读到几年前它在Vi中没有提供,但我想知道它现在是否存在于最新版本的Vim中。

    如果要相信Vim文档,Vi不支持录制(步骤1-3),但支持@。然后,您必须使用"Xy<motion>或其他一些寄存器写入命令手动将字符拖入目标寄存器。这也适用于Vim,但我无法推荐它,因为它更容易出错。

答案 1 :(得分:2)

另一种方法是“阻止选择然后编辑”方法:

  1. ctrl + v - 阻止选择

  2. 然后关注jdown-arrow

  3. shift + i会让您进入插入模式。在此处进行更改,使其在您选择的所有其他行上反映出来。

  4. esc两次会显示/重复您在第一行所做的更改。

答案 2 :(得分:0)

如果您有大量类似的行,并希望将//放在其开头,您可以执行以下操作:

:15,25norm! I//<space>

您还可以使用视觉区域(vip选择整个段落)

:'<,'>norm! I//<space>

使用模式

:g/TODO/norm! I//<space>