如何将 vim 命令插入寄存器



我想插入一个运算符,例如 手动i到我的宏寄存器中。因此,如果我想插入i运算符(在光标后插入(,我这样做:

:let @x="ihellon"

多次执行宏x时,例如使用 3@x 我得到以下结果:

hello
ihello
ihello

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

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

i不是命令。Vim只是将字符串"i"解释为普通"i"(i不是有效的转义序列(。您的代码等效于 :let @x = "ihellon" .

问题是您的宏进入插入模式 i ,但永远不会离开它,因此下一个i只是按字面意思插入。这就像执行ii:第一个i启动插入模式,第二个i入。(您可以通过执行@x来观察此行为:它将插入hellon并使您处于插入模式。

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

  • let @x = "ihellone"
  • let @x = "ihellon<Esc>"