保存 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 的方法对于您以 字符(回车符或换行符)结尾的任何宏都不会按预期工作。"。 vim.wikia.com/wiki/Macros#Saving_a_macro 是否需要引号(围绕宏内容)? Ctrl+r Ctrl+r registerName 输入寄存器内容而不解释它们 - 比 "qp 更好。不过,对于 in-vim 方法 +1。 @GH05T 例如,如果您有 :set expandtab 以便按 键插入多个空格,您可以键入(从插入模式)CTRL-V <TAB> 以插入实际的制表符.【参考方案2】:

如需更强大的解决方案,您可以查看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>"

注意:您必须使用双引号才能使用特殊键,例如 \&lt;this silly example&gt;

【讨论】:

谢谢你,因为我的宏使用了大量的 ESC 并且为 ESC 键生成的序列类似于^[&lt;80&gt;&lt;fd&gt;a,因此让我省去了很多麻烦,并且很难使用单引号使其工作。这种方法更简单/更容易,应该在文档中强调。【参考方案6】:

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

【讨论】:

以上是关于保存 vim 宏的主要内容,如果未能解决你的问题,请参考以下文章

WOW宏保存在哪个文件夹

如何使用 openpyxl 使用宏保存 XLSM 文件

打开 Excel 文件,运行宏,保存(覆盖)

Excel 宏:为啥不能保存在正确的目录中?

vim如何保存退出

Linux vim如何保存退出