在vim中,当我点击ESC
返回命令模式时,光标向左移动一个字符。这不是我所希望的,有时我会立即l
点击回到那个位置,也许是删除一个角色。
这种行为有原因吗?这对于我所缺少的使用模式来说方便吗?
答案1
在插入模式下,光标位于字符之间、第一个字符之前或最后一个字符之后。在正常模式下,光标位于字符上方(换行符不是用于此目的的字符)。这有点不寻常:大多数编辑器总是将光标放在字符之间,并且大多数命令都作用于字符后(严格来说,不是在下面) 光标。这可能部分是由于在 GUI 出现之前,文本终端总是显示光标在字符上(下划线或块,可能会闪烁)。这种抽象在插入模式下失败,因为这需要多一个位置(柱子与栅栏)。
可以这么说,模式之间的切换必须将光标移动半个字符。该i
命令向左移动,将光标放在结束的字符之前。命令a
向右移动。如果可能的话,退出插入模式(通过按Esc)会将光标向左移动(如果它位于行的开头,则会向右移动)。
我认为这种Esc行为是有道理的。通常,您在行尾打字,并且Esc只能向左输入。所以一般行为是最常见的行为。
将光标下的字符视为最后一个有趣的字符,并将插入命令视为a
。您可以a Esc在不移动光标的情况下重复,但如果您从非空行的开头开始,您将被向右移动一个位置。
答案2
答案3
此行为是可编辑的正如这里所回答的,但停下来想一想发生了什么。当您处于插入模式时,您实际上不是在字符上方,而是在它们之间。当您插入某些内容时,光标会跳到您插入的内容的末尾,以便插入的下一个内容将在此之后。现在想想,如果您刚刚输入了一封信,然后想对其做一些事情。点击Esc会将选择光标直接放在您插入的最后一个字符上。如果不这样做的话,其实会比较尴尬。
您可能想到的情况是,当您处于插入模式时,像正常模式一样移动,然后切换。在这种情况下,光标确实会返回一个字符,但如果您这样认为,则表明您处于插入模式,并且您所做的最后一件事不是插入。也许你应该花更多时间在正常模式下?