如何将vim命令插入寄存器?

tha*_*lay 0 vim

我想插入一个操作符,例如i手动插入我的宏寄存器.所以,如果我想插入i运算符(在光标后插入),我这样做:

:let @x="\ihello\n"

x多次执行宏时,例如3@x我得到这个结果:

hello
ihello
ihello
Run Code Online (Sandbox Code Playgroud)

Vim认可了这条新线\n.但只承认\i一次.对于剩余的行,vim将命令打印\i为字符串'i'.

如何插入vim命令(i用于插入,<esc>转义,删除等)?

mel*_*ene 5

\i不是命令.Vim只是将字符串解释"\i"为plain "i"(\i不是有效的转义序列).你的代码相当于:let @x = "ihello\n".

问题是你的宏进入插入模式i,但从不离开它,所以下一个i只是字面插入.这就像执行ii:第一个i开始插入模式,第二个i插入.(您可以通过执行@x以下操作来观察此行为:它将插入hello\n并使您处于插入模式.)

要修复宏,您需要Esc在字符串中放置一个字符.有关:h expr-string可用转义序列的列表,请参阅.两种可能性:

  • let @x = "ihello\n\e"
  • let @x = "ihello\n\<Esc>"