启动vim并输入以下键序列:
i a b c Esc i a b c Esc i a < kbd> b c Esc
您将在缓冲区中看到以下文字。
abababccc
这是因为,在您插入第一个abc
后,光标位于c
上,当您再次按i
时,它会插入第二个abc
之前c
,依此类推。在下面引用:help i
。
<insert> or *i* *insert* *<Insert>*
i Insert text before the cursor [count] times.
When using CTRL-O in Insert mode |i_CTRL-O| the count
is not supported.
启动vim并输入以下键序列:
3 i a b c Esc
您现在可以在缓冲区中看到这一点。
abcabcabc
为什么当实验2尝试在i
命令之前使用计数前缀执行相同的操作时,实验2的结果与实验1的结果不匹配?
答案 0 :(得分:4)
iabc<Esc>iabc<Esc>iabc<Esc>
表示“插入abc
,然后退出插入模式,然后插入abc
,然后退出插入模式,然后插入abc
,然后退出插入模式”。
3iabc
表示“插入abc三次”
第一个插入模式在每个插入之间留下插入模式,因此光标落在左边的字符上,下一个i
插入abc
之前插入的c
。
第二个从不离开插入模式,因此abc
一个接一个地插入。
导致不同结果的不同命令。
答案 1 :(得分:1)
我想这是由于光标移动造成的。作为帮助状态, i 在光标之前插入。第一次按 Esc 后,光标位于“b和c之间”或“在c上”。
如果你做 3 i a b c Esc ,序列abc
在当前光标之前插入三次。
我认为你也可以将其视为 3 ( i a b c ) Esc ,所以你在第一个实验中有三次 Esc 而在第二个实验中只有一次。