正在保存Vim宏

有人知道如何正确保存/重用Vim编辑器中记录的宏吗?

55577 次浏览

在~/.vimrc中编写宏,例如,要定义由Ctrl+O启动的宏,请将以下行添加到~/.vimrc中:

map <C-O> MACROTEXT

在通过键入qa来录制宏时,可以通过键入"ap来检索宏文本

使用后跟字母(例如“ X ”)的q录制宏,然后按q结束宏定义。在此定义期间,由起始和结束'q'包围的码型仅进入其中一个复制/粘贴寄存器(本例中为寄存器“ X ”),因此您可以在正常模式下使用"xp"xP命令进行粘贴,其中X是要粘贴的寄存器。在普通模式下输入"xp,将内容插入寄存器X,并返回普通模式。

要保存它,您可以打开.vimrc并粘贴内容,同时使用let @x来定义宏,然后下次启动Vim时,寄存器将会出现。
格式类似于:

let @q = 'macro contents'

不过,要小心引用。他们必须适当地逃脱。

因此,要将宏_ABC_保存为0,可以执行以下操作:

  • 从正常模式:qx
  • 输入任何命令
  • 从正常模式:q
  • 打开.vimrc
  • 插入一行let @x = '...'(参见下文)
  • 对于上述...模式,您可以仅在应放置模式的位置使用"xp。但这不是必须的,你可以直接输入宏定义。

:mkexrc(或:mkvimrc)命令可用于将所有当前:map:set设置保存到一个文件中。有关详细信息,请参阅:help mkexrc

要获得更强大的解决方案,您可以签出马维姆

它允许您将宏保存在特定的名称空间中(或使用文件类型作为默认名称空间),并且您可以稍后搜索保存的宏并将其加载到准备使用的寄存器中。

如果你重用了很多宏,这是非常有帮助的。

您可以在~/.vimrc上执行此操作

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

注意:必须使用双引号才能使用特殊键,如在\<this silly example>中。

MacOS Mojave(10.14.6)上的Vim 8.0实际上会自动保持宏和命名缓冲区(默认情况下,尽管我还没有找到关闭此行为的方法)。关闭Vim会话将使用任何命名的缓冲区/宏更新~/.viminfo文件。