为什么插入文本三次在Vim中产生的结果不同于使用3次计数和插入文本一次?

时间:2014-04-12 20:33:29

标签: vim

实验1

启动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.

实验2

启动vim并输入以下键序列:

3 i a b c Esc

您现在可以在缓冲区中看到这一点。

abcabcabc

为什么当实验2尝试在i命令之前使用计数前缀执行相同的操作时,实验2的结果与实验1的结果不匹配?

2 个答案:

答案 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 而在第二个实验中只有一次。