我想插入一个运算符,例如i
手动进入我的宏寄存器。所以,如果我想插入i
运算符(在光标后插入),我会这样做:
:let @x="\ihello\n"
多次执行宏x
时,例如与3@x
我得到了这个结果:
hello
ihello
ihello
Vim识别新行\n
。但只能识别\i
一次。对于剩余的行,vim将命令\i
打印为字符串' i'。
如何插入vim命令(i
用于插入,<esc>
用于转义,删除等)?
答案 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>"