正在用控制字符恢复 Vim 宏

Restoring Vim macro with control character

我在 Linux 上使用 GVim,并试图通过使用 :source 命令获取 vim 脚本来恢复宏。我注意到,如果保存的宏包含 return 键,则会隐式附加 ^J,从而改变宏行为。即使我在命令行手动输入它们也会发生。例如:

let @c = "<CR>"

如果我显示寄存器内容,它显示 ^J 悄悄进入:

:reg c
--- 寄存器 ---
“c^M^J

如果我只用 return 键记录,就没有虚假添加。 ^J 悄悄进来的任何线索?

寄存器具有确定其字符/行模式的试探法。以 Enter 结尾的字符串会触发逐行检测,这会导致 Vim 附加 ^J。您可以使用 setreg(),它允许您通过可选的第三个参数指定寄存器模式:

:call setreg('c', "\<CR>", 'c')
:reg c
--- Registers ---
"c   ^M