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

Rub*_*ava 0 vi vim

输入:

==abc==

===abc===

====abc====
Run Code Online (Sandbox Code Playgroud)

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

==abc==

 InsertedtexT===abc===

 InsertedtexT====abc====
Run Code Online (Sandbox Code Playgroud)

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

==abcInsertedtexT==

===abcInsertedtexT===

====abcInsertedtexT====
Run Code Online (Sandbox Code Playgroud)

Ama*_*dan 12

:g不会将光标定位在匹配位置,而是位于行的开头.并且空间将向右移动光标(我假设您在正常模式下测试时没有键入.)所以这会发生::g找到以等于结尾的行; b带你到前一行(第一行除外,:norm因为你不能倒退,执行中止),所以现在光标位于行之间; 空间让你前进,到下一行的开头; i进入插入模式; 并InsertedtexT与前导空间一起插入零件和包裹.

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

:g/=$/norm! $biInsertedtexT
Run Code Online (Sandbox Code Playgroud)

(注意没有空格,并注意您需要明确地转到行的末尾; :norm!以防万一,如果您的环境有任何奇怪的映射.)

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