我知道recording in vim是什么。
比方说,我已经在寄存器上录制了一个录音,但是我想丢失一些想要添加到该序列中的键。有没有办法将这些键附加到vim的早期录音中?
答案 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>从字面上看。