【发布时间】:2019-03-25 15:57:14
【问题描述】:
我知道recording in vim 是什么。
假设我已经在寄存器上录制了一段录音,但我缺少一些想要添加到该序列中的键。有没有办法将这些键附加到 vim 中的早期记录?
【问题讨论】:
标签: vim automation shortcut key-bindings
我知道recording in vim 是什么。
假设我已经在寄存器上录制了一段录音,但我缺少一些想要添加到该序列中的键。有没有办法将这些键附加到 vim 中的早期记录?
【问题讨论】:
标签: vim automation shortcut key-bindings
使用大写字母将追加到寄存器,因此qA 将继续记录@a 宏。
来自:help q:
q{0-9a-zA-Z"} Record typed characters into register {0-9a-zA-Z"}
(uppercase to append).
注意:这适用于与寄存器相关的所有内容,因此"Ayw 还会将下一个单词附加到寄存器"a。
【讨论】:
粘贴宏
您可以通过执行以下操作将您的寄存器粘贴到当前文件中(假设是寄存器“a”):
:put a
如果我想删除该行的最后一个单词,并且我想擦除它之前的空格,则跳转到该行的开头并下一行
原始寄存器“a”:
$diw
粘贴注册表
:put a
在插入模式下,我们需要按字面意思插入宏,所以我们需要使用 Ctrl-rCtrl-ra
注意:第二个 Ctrl-r 是捕获 Esc 或 Enter 所必需的。
修改宏
修改寄存器“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-vEsc
直接键入 Esc你也可以使用“let”来设置一个寄存器,在这种情况下一个寄存器“a”来切换行的大小写并转到下一行:
let @a="V~\<Esc>0j"
let 选项允许您将宏保存在 ~/.vimrc 中,这对于您每天需要宏的情况非常有用。
使用“let”来分配和重新分配宏的另一个优点是您可以通过这种方式插入特殊键:
:let @a="iHello World\<Return>bye\<Esc>"
必须使用双引号,否则将无法按预期工作。
注意:通过键入Ctrl-vEsc插入有向图^[,它代表Esc 从字面上看。
【讨论】: