保存 vim 宏
Posted
技术标签:
【中文标题】保存 vim 宏【英文标题】:Saving vim macros 【发布时间】:2011-01-02 17:24:27 【问题描述】:有人知道如何正确保存/重用 vim 编辑器中记录的宏吗?
【问题讨论】:
【参考方案1】:使用q
后跟一个字母来录制宏。这只是进入复制/粘贴寄存器之一,因此您可以在正常模式下使用"xp
或"xP
命令正常粘贴它,其中 x 是要粘贴的寄存器。
要保存它,你打开 .vimrc 并粘贴内容,然后在你下次启动 vim 时该寄存器将在附近。 格式类似于:
let @q = 'macro contents'
不过,请注意引号。他们必须正确逃脱。
所以要保存一个宏,你可以这样做:
从正常模式:qq
输入任何命令
从正常模式:q
打开.vimrc
"qp
将宏插入到您的 let @q = '...'
行中
【讨论】:
另外,如果您需要插入特殊字符(例如转义字符,在我的情况下),请在插入模式下使用CTRL-V <ESC>
插入正确的字符。文字 <ESC>
不起作用
"但是请注意,上述使用 :let 的方法对于您以 Ctrl+r Ctrl+r registerName
输入寄存器内容而不解释它们 - 比 "qp
更好。不过,对于 in-vim 方法 +1。
@GH05T 例如,如果您有 :set expandtab
以便按 CTRL-V <TAB>
以插入实际的制表符.如需更强大的解决方案,您可以查看Marvim。
它允许您将宏保存在特定命名空间中(或使用文件类型作为默认命名空间),您可以稍后搜索已保存的宏并将它们加载到准备使用的寄存器中。
如果你重用了很多宏,这很有帮助。
【讨论】:
只是想补充一下,并说明设置 marvim 是多么容易-将单个文件复制到 /plugin 目录,然后使用 F3 保存宏并使用 F2 运行。【参考方案3】:在你的 ~/.vimrc 中编写你的宏,例如定义一个由 CTRL+O 启动的宏,将以下行添加到你的 ~/.vimrc 中:
map <C-O> MACROTEXT
当您通过键入qa
录制宏时,您可以通过键入"ap
检索宏文本
【讨论】:
使用 "ap 或等效项不起作用,但您可以通过 :reg 获得相同的信息 "ap 将引用记录在a
寄存器上的宏【参考方案4】:
:mkexrc
(或:mkvimrc
)命令可用于将所有当前:map
和:set
设置保存到文件中。详情请见:help mkexrc
。
【讨论】:
【参考方案5】:你可以在你的 ~/.vimrc
上这样做
:let @a="iHello World!\<CR>bye\<Esc>"
注意:您必须使用双引号才能使用特殊键,例如 \<this silly example>
。
【讨论】:
谢谢你,因为我的宏使用了大量的 ESC 并且为 ESC 键生成的序列类似于^[<80><fd>a
,因此让我省去了很多麻烦,并且很难使用单引号使其工作。这种方法更简单/更容易,应该在文档中强调。【参考方案6】:
MacOS Mojave (10.14.6) 上的 Vim 8.0 实际上会自动保留宏和命名缓冲区(默认情况下,尽管我还没有寻找关闭此行为的方法)。关闭 Vim 会话将使用任何命名的缓冲区/宏更新 ~/.viminfo
文件。
【讨论】:
以上是关于保存 vim 宏的主要内容,如果未能解决你的问题,请参考以下文章