我想插入一个运算符,例如 手动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>"