无法将 vim 宏文本转换为普通字符

无法将 vim 宏文本转换为普通字符

我正在尝试保存我写入文件中的 vim 宏.vimrc。我成功将宏录制到 register 中s,其内容显示如下:

.,.s/S:/\&AHOMW€kbW€kbE/:.,.s/\\/\//g'€kb0

.vimrc接下来我在我的文件中放入如下指令:

let @s=':.,.s/S:/\&AHOMW€kbW€kbE/:.,.s/\\/\//g'€kb0'

当我开始新的 vim 会话时,vim 启动时会抱怨“let”命令是无效表达式。在搜索过程中,我遇到了一个称为“normal”的命令,它似乎能够将上述表达式转换为普通文本。我尝试了“normal”命令和“exe ""normal ... "" "” 命令,但都没有给我返回纯字符的宏文本翻译版本。

能够使用从上述示例类型中得出的纯文本宏指令定义“let”指令的正确方法是什么,即在活动编辑会话期间宏如何首先保存在 s 寄存器中?

提前致谢。

答案1

问题在于您的宏包含单引号,而您试图用单引号括住整个字符串,而不在宏中转义单引号。Vim 有一种在单引号字符串中转义单引号的略微不寻常的方法,那就是添加另一个单引号。例如:

let @s=':.,.s/S:/\&AHOMW€kbW€kbE/:.,.s/\\/\//g''€kb0'

相关内容