【问题标题】:Saving vim macros保存 vim 宏
【发布时间】:2011-01-02 17:24:27
【问题描述】:

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

【问题讨论】:

    标签: vim editor macros


    【解决方案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 文件。

      【讨论】:

        猜你喜欢
        • 2021-03-09
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 2014-05-14
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多