保存vim宏

jna*_*o52 157 vim macros editor

有谁知道如何正确保存/重用vim编辑器内记录的宏?

Dan*_*son 204

使用q后跟一个字母来记录宏.这只是进入一个复制/粘贴寄存器,因此您可以在正常模式下使用"xp"xP命令正常粘贴它.

要保存它,你打开.vimrc并粘贴内容,然后寄存器将在你下次启动vim时出现.
格式如下:

let @q = 'macro contents'
Run Code Online (Sandbox Code Playgroud)

但要小心引号.他们必须妥善逃脱.

因此,要保存宏,您可以执行以下操作:

  • 从正常模式: qq
  • 输入任何命令
  • 从正常模式: q
  • 打开.vimrc
  • "qp将宏插入到您的let @q = '...'行中

  • `Ctrl + r Ctrl + r registerName`输入寄存器内容而不解释它们 - 优于``qp`.+ in for vim方法. (14认同)
  • "但请注意,上述方法使用:let将无法按照预期的方式对以<CR>或<NL>字符(回车符或换行符)结尾的任何宏起作用." http://vim.wikia.com/wiki/Macros#Saving_a_macro (5认同)
  • 另外,如果你需要插入特殊字符(比如escape,在我的情况下),在插入模式下使用`CTRL-V <ESC>`来插入正确的字符.文字`<ESC>`不起作用 (3认同)
  • 是否需要引号(在宏内容周围)? (2认同)

小智 20

如需更强大的解决方案,您可以结账Marvim.

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

如果重复使用大量宏,这非常有用.

  • 只想说明这一点并说明设置将单个文件复制到/ plugin目录是多么容易,然后使用F3保存宏并运行F2. (6认同)

Rao*_*ter 18

在你的〜/ .vimrc中写你的宏,通过示例定义一个由CTRL + O启动的宏,将以下行添加到〜/ .vimrc:

map <C-O> MACROTEXT
Run Code Online (Sandbox Code Playgroud)

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

  • 使用“ap 或等效命令不起作用,但您可以通过 :reg 获得相同的信息 (2认同)

Mat*_*ery 11

:mkexrc(或:mkvimrc)命令可用于所有当前保存:map:set设置到一个文件.详情:help mkexrc请见.


Ser*_*ujo 10

你可以在你的 ~/.vimrc

:let @a="iHello World!\<CR>bye\<Esc>"
Run Code Online (Sandbox Code Playgroud)

注意:您必须使用双引号才能使用特殊键,例如 in \<this silly example>

  • 谢谢你,这让我省去了很多麻烦,因为我的宏使用了大量 ESC,并且生成的 ESC 键序列类似于“^[&lt;80&gt;&lt;fd&gt;a”,并且很难使其与单引号一起工作。这种方法更简单/更容易,应该在文档中强调。 (2认同)