使用 <Esc> 在 vi​​m 中保存宏

wdk*_*nls 5 vim macros

这个线程解释了将 vim 宏保存到文件中,但我无法让它工作。我在寄存器 b 中存储了以下宏,我试图将其保存到我的 rst.vim 文件中:

let @b = '<Esc>bea**<Esc>`<i**<Esc>gvoo<Esc>e'
Run Code Online (Sandbox Code Playgroud)

“...”内的所有内容都来自使用从缓冲区粘贴宏"bp。但是当我关闭并重新打开仅包含句子The quick brown fox jumped over the moon和类型的第一个文件时fbv2e@b,这是生成的句子:

Thc>bea**<Esc>`<i**<Esc>gvoo<Esc>e quick brown fox jumped over the moon.
Run Code Online (Sandbox Code Playgroud)

所以,肯定有一些我丢失的转义按键,但我找不到它们是什么。我尝试搜索谷歌和:help类似的宏示例,但没有成功。我缺少什么以及搜索时应该寻找哪些术语?谢谢!

wdk*_*nls 4

正如一些人所暗示的,问题是<Esc>实际上是<, E, s, c, >。Vim 使用 . 在文本文件中生成转义符C-v <ESC>。于是我就跑:s/<Esc>/^[/g:let线提问了。 注意^,生成的[是不一样的!^[C-v <Esc>

为了避免几个月后的头痛,我转而^[使用\e. 我必须确保将宏用双引号引起来,因为单引号不起作用。