我有两个关于vim 映射的问题,例如imap 和递归。在 Vim 中,映射既可以是右递归的,也可以既不是左递归的也不是右递归的,但它们不允许是左递归的,对吧?为什么不?我测试了以下示例来说明我的意思:
(左递归)当我执行
:imap x xyz
然后在插入模式下输入“x”,输入缓冲区的内容是
xyz
据我所知,这种行为与我使用 inoremap 而不是 imap 会发生的情况无法区分。
(既不是左递归也不是右递归)当我执行时
:imap x yxz
然后在插入模式下键入“x”,(试图)放入缓冲区的内容是
y...yz
(右递归)当我执行
:imap x yzx
然后在插入模式下键入“x”,(试图)放入缓冲区的内容是
yzyzyzyzyzyz...
(相互递归)当我执行时
:imap x abc :imap a x
然后在插入模式下输入“x”,我收到“E223:递归映射”。
似乎我已经证明 Vim 不允许左递归映射和相互递归映射,但我想验证一下:在 Vim 中定义(可能相互)递归映射的规则是什么?