输入:
==abc==
===abc===
====abc====
Vim的命令模式→:g/=$/normal b i InsertedtexT
(别名:"norm" and "norm!")→输出:
==abc==
InsertedtexT===abc===
InsertedtexT====abc====
正常模式→$ b i InsertedtexT
→输出(这是它应该做的):
==abcInsertedtexT==
===abcInsertedtexT===
====abcInsertedtexT====
答案 0 :(得分:12)
:g
不会将光标定位在匹配位置,而是位于行的开头。并且空间将向右移动光标(我假设您在正常模式下测试时没有键入。)所以这种情况发生::g
找到以等于结尾的行; b
将您带到上一行(第一行除外,:norm
的执行因为无法向后而中止),所以现在光标位于行之间;空间让你前进,到下一行的开头; i
进入插入模式;并且InsertedtexT
与前导空格一起插入了part-and-parcel。
您想要做的就是您在正常模式下所做的事情:
:g/=$/norm! $biInsertedtexT
(注意没有空格,请注意您需要明确地转到行尾;如果您的环境中有任何奇怪的映射,请注意:norm!
。)
tl; dr:Vim的正常命令在命令模式下正常工作。