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

时间:2018-01-28 10:40:32

标签: vim

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

:let @x="\ihello\n"

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

hello
ihello
ihello

Vim识别新行\n。但只能识别\i一次。对于剩余的行,vim将命令\i打印为字符串' i'。

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

1 个答案:

答案 0 :(得分:5)

\i不是命令。 Vim只是将字符串"\i"解释为普通"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>"