将密钥附加到 vim 中的较早记录

Append keys to an earlier recording in vim

我知道recording in vim是什么。

假设我已经在收银机上录制了一段录音,但我还缺少一些要添加到该序列中的键。有没有办法将这些密钥附加到 vim 中的早期记录?

使用大写字母将附加到寄存器,因此 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

如果我想删除该行的最后一个字,并且我想删除它前面的space,则跳到该行的开头并向下移动一行

原始寄存器"a":

$diw

粘贴寄存器

:put a

在插入模式下我们需要直接插入宏,所以我们需要使用Ctrl-rCtrl-ra

注意:第二个 Ctrl-r 是捕获 EscEnter 所必需的。

修改宏

修改寄存器"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[=72插入=] 并且它代表字面上的 Esc