将键附加到vim中的较早记录

时间:2018-10-21 11:15:36

标签: vim automation shortcut key-bindings

我知道recording in vim是什么。

比方说,我已经在寄存器上录制了一个录音,但是我想丢失一些想要添加到该序列中的键。有没有办法将这些键附加到vim的早期录音中?

2 个答案:

答案 0 :(得分:7)

使用大写字母会附加到寄存器中,因此qA将继续记录@a宏。

来自:help q

q{0-9a-zA-Z"}       Record typed characters into register {0-9a-zA-Z"}
                    (uppercase to append).

注意:这适用于与寄存器相关的所有内容,因此"Ayw还会在寄存器"a后面附加下一个单词。

答案 1 :(得分:2)

粘贴宏

您可以通过执行以下操作将寄存器粘贴到当前文件上(假设寄存器“ a”):

:put a

如果我想删除该行的最后一个单词,并且想删除该行之前的空格,请跳至该行的开头并向下一行

原始寄存器“ a”:

$diw

粘贴寄存器

:put a

在插入模式下,我们需要按字面意义插入宏,因此我们需要使用 Ctrl-r Ctrl-r a

注意:要捕获 Esc Enter ,第二个 Ctrl-r 是必需的。

修改宏

修改寄存器“ a”:

$diwx0j

在上面的示例中,我们仅添加了x0j

重新分配宏

然后,您可以进行视觉选择并将其拖到寄存器“ a”中:

0vg_"ay

0 ........ goes to the beginning of the line
v ........ visual selection
g_ ....... goes to the end of the line without line break
"ay  ..... copy to the register "a"

如果您想切换模式,则可以通过键入 Ctrl-v Esc

来直接键入Esc。

您还可以使用“ let”来设置寄存器,在这种情况下,可以使用寄存器“ a”将该行切成小写并转到下一行:

let @a="V~\<Esc>0j"

let选项可让您将宏保存在~/.vimrc中,这对于每天需要宏的情况非常有用。

使用“ let”分配和重新分配宏的另一个优点是,您可以通过以下方式插入特殊键:

:let @a="iHello World\<Return>bye\<Esc>"

必须使用双引号,否则它将无法正常工作。

注意:通过输入 Ctrl-v Esc 插入有向图^[,它代表 Esc < / kbd>从字面上看。