我在Linux上使用GVim,并尝试使用:source
命令通过获取vim脚本来恢复宏。我注意到如果保存的宏包含返回键,则隐式附加^J
,从而改变宏行为。即使我在命令行手动输入它也会发生。例如:
let @c = "<CR>"
如果我显示寄存器内容,它会显示^J
crept in:
:reg c --- Registers --- "c ^M^J
如果我只使用返回键进行录制,则不会添加任何虚假内容。 ^J
悄悄进入的任何线索?
答案 0 :(得分:3)
寄存器具有确定其字符/线性模式的启发式方法。以Enter结尾的字符串会触发行检测,这会导致Vim追加^J
。您可以使用setreg()
,它允许您通过可选的第三个参数指定寄存器模式:
:call setreg('c', "\<CR>", 'c')
:reg c
--- Registers ---
"c ^M