Vim的正常命令在命令模式下无法正常工作

时间:2015-10-23 00:17:05

标签: vim vi

输入:

==abc==

===abc===

====abc====

Vim的命令模式→:g/=$/normal b i InsertedtexT
(别名:"norm" and "norm!")→输出:

==abc==

 InsertedtexT===abc===

 InsertedtexT====abc====

正常模式→$ b i InsertedtexT→输出(这是它应该做的):

==abcInsertedtexT==

===abcInsertedtexT===

====abcInsertedtexT====

1 个答案:

答案 0 :(得分:12)

:g不会将光标定位在匹配位置,而是位于行的开头。并且空间将向右移动光标(我假设您在正常模式下测试时没有键入。)所以这种情况发生::g找到以等于结尾的行; b将您带到上一行(第一行除外,:norm的执行因为无法向后而中止),所以现在光标位于行之间;空间让你前进,到下一行的开头; i进入插入模式;并且InsertedtexT与前导空格一起插入了part-and-parcel。

您想要做的就是您在正常模式下所做的事情:

:g/=$/norm! $biInsertedtexT

(注意没有空格,请注意您需要明确地转到行尾;如果您的环境中有任何奇怪的映射,请注意:norm!。)

tl; dr:Vim的正常命令在命令模式下正常工作。