在vim中,当我单击ESC
以返回命令模式时,光标向左移动一个字符。这不是我希望的,偶尔我会立即点击l
以移回该位置,也许是删除角色。
有这种现象的原因吗?这对我所缺少的使用方式是否方便?
在vim中,当我单击ESC
以返回命令模式时,光标向左移动一个字符。这不是我希望的,偶尔我会立即点击l
以移回该位置,也许是删除角色。
有这种现象的原因吗?这对我所缺少的使用方式是否方便?
Answers:
在插入模式下,光标位于字符之间,或者在第一个字符或最后一个字符之后。在正常模式下,光标位于字符上方(换行符不是为此目的的字符)。这有点不寻常:大多数编辑器总是将光标放在字符之间,并且大多数命令在光标之后(严格来说,不是在光标下方)作用于字符。这可能部分是由于以下事实:在GUI之前,文本终端总是将光标显示在字符上(下划线或块,也许是闪烁的)。这种抽象在插入模式下失败,因为它需要一个以上的位置(柱子与围栏)。
可以说,在两种模式之间切换必须将光标移动半个字符。该i
命令向左移动,将光标置于结束的字符之前。该a
命令向右移动。Esc如果可能,退出插入模式(通过按)可将光标向左移动(如果在行的开头,则向右移动)。
我认为这种Esc行为是合理的。通常,您会在行尾输入内容,然后Esc只能向左移动。因此,一般行为是最常见的行为。
将光标下方的字符视为最后一个有趣的字符,并将insert命令视为a
。您可以重复操作a Esc而无需移动光标,但如果从非空行的开头开始,则会向右移动一个位置。
如此处回答,此行为是可编辑的,但请停下来想一想到底发生了什么。当您处于插入模式时,您实际上不在字符上方,而在字符之间。当您插入某些内容时,光标会跳到您插入内容的末尾,以便在其后插入下一个内容。现在考虑一下,如果您只是键入一个字母,然后想对它做些什么。命中Esc会将选择光标直接放在您插入的最后一个字符上。如果不这样做,那实际上会很尴尬。
您可能会想到的情况是,当您处于插入模式时,好像在正常模式下四处移动然后切换。在那种情况下,游标确实看起来会返回一个字符,但是如果您以这种方式认为它表明您处于插入模式,那么您所做的最后一件事情就是未插入。也许您应该在正常模式下花费更多时间?
i
和ESC
按键的后退行为?
i
后面跟随的“向后走”行为ESC
是的功能,i
并且完全独立于ESC
;具体来说,当您点击时,i
您正在要求vim 插入一个字符,这在定义上意味着“在我所在的字符之前插入一个字符”,而不是a
“在该字符之后插入一个字符”。
键入Alt+ L返回命令模式。
它不需要任何重新映射或vim配置更改。之所以起作用,是因为在大多数终端仿真器上,Alt+ KEY发送一个Esc后跟KEY(在xterm上,您可能需要Xterm*metaSendsEscape: true
在〜/ .Xdefaults文件中添加一行)。这种行为使您甚至可以“创建”其他可以立即使用的插入模式组合,例如Alt+ S到Backspace。
顺便说一句,将光标放在刚写好的字符上会很不方便。例如,Escdw不会删除您刚刚插入的文本后面的单词。
Esc d e
以删除前面的单词。我恢复为默认行为,因为我感觉它改变了我脑海中已经编码的其他行为。