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 的普通命令在命令模式下可以正常工作。
输入:
==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 的普通命令在命令模式下可以正常工作。