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

Vim's normal command doesn't work correctly in command mode

输入:

==abc==

===abc===

====abc====

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

==abc==

 InsertedtexT===abc===

 InsertedtexT====abc====

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

==abcInsertedtexT==

===abcInsertedtexT===

====abcInsertedtexT====

:g 不会将光标定位在匹配处,而是定位在行首。 space 将向右移动光标(我假设您在正常模式下测试时没有输入。)所以会发生这种情况: :g 找到以等号结尾的行; b 带你到上一行(除了第一行,:norm 的执行被中止,因为你不能后退),所以现在光标在行之间; space 让你前进,到下一行的开头; i 进入插入模式;并且 InsertedtexT 与前导 space.

一起被插入部分和包裹

你想做的正是你在普通模式下所做的:

:g/=$/norm! $biInsertedtexT

(注意没有 spaces,并注意您需要明确地转到行尾;并且 :norm! 以防万一,如果您的环境正在进行任何奇怪的映射。 )

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