使用控制字符恢复Vim宏

使用控制字符恢复Vim宏,vim,Vim,我在Linux上使用GVim,并试图通过使用:source命令来获取vim脚本来恢复宏。我注意到,如果保存的宏包含返回键,则会隐式附加一个^J,从而改变宏的行为。即使我在命令行手动输入它们,也会发生这种情况。例如: let @c = "<CR>" 如果我只记录一个返回键,就不会有虚假的添加。有什么线索可以解释为什么^J会悄悄出现吗?寄存器有一种启发式方法,可以确定它们的字符/行模式。以Enter结尾的字符串触发逐行检测,并导致Vim追加^J。您可以使用setreg(),它允许您通过

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

let @c = "<CR>"

如果我只记录一个返回键,就不会有虚假的添加。有什么线索可以解释为什么
^J
会悄悄出现吗?

寄存器有一种启发式方法,可以确定它们的字符/行模式。以Enter结尾的字符串触发逐行检测,并导致Vim追加
^J
。您可以使用
setreg()
,它允许您通过可选的第三个参数指定寄存器模式:

:call setreg('c', "\<CR>", 'c')
:reg c
--- Registers ---
"c   ^M
:调用setreg('c',“\”,'c')
:reg c
---登记册---
“c^M

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

:call setreg('c', "\<CR>", 'c')
:reg c
--- Registers ---
"c   ^M
:调用setreg('c',“\”,'c')
:reg c
---登记册---
“c^M