【发布时间】:2026-02-17 09:35:01
【问题描述】:
我正在尝试创建一个宏以在全球范围内使用它。我已将此命令插入到我的 .vimrc 文件中
let @c='<esc>:r c.c'
或
let @c=':r c.c'
但在这两种情况下,当我在任何文件上使用“@c”时,它只会在文件上打印'c>:r c.c'
【问题讨论】:
我正在尝试创建一个宏以在全球范围内使用它。我已将此命令插入到我的 .vimrc 文件中
let @c='<esc>:r c.c'
或
let @c=':r c.c'
但在这两种情况下,当我在任何文件上使用“@c”时,它只会在文件上打印'c>:r c.c'
【问题讨论】:
如果您想在宏中包含特殊字符(如 Escape 或 Enter),请使用非文字字符串(双引号,而不是单引号)和正确的语法。见:help expr-string。正如@Amit 建议的那样,您可以使用原始特殊字符,但这会使您的 vimrc 文件难以阅读。
假设您以普通模式开始并想输入 @c,则无需以 Escape 开始。
出于测试目的,我尝试了
:let @c = ":echo 'foo'\<CR>"
它按预期工作。我什至将这一行(没有前导 :)添加到我的 vimrc 文件中,以确保并以这种方式对其进行测试。这应该有效:
:let @c = ":r c.c\<CR>"
【讨论】:
尝试在宏末尾添加“^M”,然后“@c”应该可以使用。否则 ':@c' 应该像 ebenezer 提到的那样工作。您应该使用 Ctrl+VEnter 插入“^M”。
let @c=':r c.c^M'
最好的方法是先录制宏,然后将其保存到.vimrc。
如果这些都不起作用,您可以使用"cp 检查您的寄存器c 的内容,看看是否缺少某些内容。
【讨论】:
【讨论】: