【问题标题】:How to create a macro with vim commands?如何使用 vim 命令创建宏?
【发布时间】:2026-02-17 09:35:01
【问题描述】:

我正在尝试创建一个宏以在全球范围内使用它。我已将此命令插入到我的 .vimrc 文件中

let @c='<esc>:r c.c' 

let @c=':r c.c'

但在这两种情况下,当我在任何文件上使用“@c”时,它只会在文件上打印'c>:r c.c'

【问题讨论】:

    标签: vim macros


    【解决方案1】:

    如果您想在宏中包含特殊字符(如 Escape 或 Enter),请使用非文字字符串(双引号,而不是单引号)和正确的语法。见:help expr-string。正如@Amit 建议的那样,您可以使用原始特殊字符,但这会使您的 vimrc 文件难以阅读。

    假设您以普通模式开始并想输入 @c,则无需以 Escape 开始。

    出于测试目的,我尝试了

    :let @c = ":echo 'foo'\<CR>"
    

    它按预期工作。我什至将这一行(没有前导 :)添加到我的 vimrc 文件中,以确保并以这种方式对其进行测试。这应该有效:

    :let @c = ":r c.c\<CR>"
    

    【讨论】:

      【解决方案2】:

      尝试在宏末尾添加“^M”,然后“@c”应该可以使用。否则 ':@c' 应该像 ebenezer 提到的那样工作。您应该使用 Ctrl+VEnter 插入“^M”。

      let @c=':r c.c^M'
      

      最好的方法是先录制宏,然后将其保存到.vimrc。 如果这些都不起作用,您可以使用"cp 检查您的寄存器c 的内容,看看是否缺少某些内容。

      【讨论】:

        【解决方案3】:

        这是described in another answer。试试这样的:

        let @c = ':r c.c'
        

        然后,在你的文件中,使用

        :@c
        

        执行它。

        【讨论】: