保存vim宏


166

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

Answers:


216

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

要保存它,请打开.vimrc并粘贴内容,然后该寄存器将在下次启动vim时出现。
格式类似于:

let @q = 'macro contents'

但是要小心引号。他们将不得不适当地逃脱。

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

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

3
另外,如果您需要插入特殊字符(例如我的转义字符),请CTRL-V <ESC>在插入模式下使用以插入正确的字符。文字<ESC>不起作用
adam_0

5
“但是请注意,上述使用:let的方法对于以<CR>或<NL>字符(回车或换行符)结尾的任何宏均无法按预期方式工作。”。vim.wikia.com/wiki/Macros#Saving_a_macro
Paolo

2
是否需要引号(在宏内容周围)?
user2472071 2014年

15
Ctrl+r Ctrl+r registerName输入注册内容而无需解释-比"qp。不过,对于vim方法,该值为+1。
LAFK说恢复莫妮卡

@ adam_0您能详细说明一下吗?也许包括一个例子?我不知道如何嵌入特殊字符,即esc。我尝试了输入逃逸的各种组合,但均无济于事。“键码”最终破坏了宏,并打印了整个序列。
GH05T

21

要获得更强大的解决方案,您可以查看Marvim

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

如果您重用了很多宏,这将很有帮助。


6
只是想第二点,说一下设置marvim-将单个文件复制到/ plugin目录是多么容易,然后使用F3保存宏并运行F2。
Raine Revere 2012年

18

在〜/ .vimrc内编写宏,以定义由CTRL + O启动的宏(例如),将以下行添加到〜/ .vimrc中:

map <C-O> MACROTEXT

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


使用“ ap或同等功能不起作用,但是您可以通过:reg获得相同的信息
DShook 2014年

“ ap将引用记录在a寄存器中的宏
泰勒·福尔

11

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


4

你可以这样在你的 ~/.vimrc

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.