当我在 Vim 中切换到命令模式时,当光标位于单词末尾或单词上时,以及当我使用 $
转到行尾时,光标似乎向后移动一个字符。 ,它不会到达实际的行尾,而是在最后一个单词的结尾前一个字符,以及 l
("el") 不会向前移动,我必须使用箭头键才能到达那里。
我一直无法找到这种行为的文档,但这对我来说似乎很奇怪。这背后的原因是什么(出于我自己的好奇心),我该如何解决(或处理它)?
最佳答案
如果您使用 gvim,光标会发生变化,则会更清楚一些。
gvim 中的插入模式将光标作为 I 型梁,因为您键入的下一个字母将插入在 | 之后。正常模式具有块光标,因为您接下来键入的内容可能只会影响当前突出显示的字母(例如,如果您使用 x、s 等)。所以插入模式实际上是添加文本,而普通模式是通过某种方式修改文本。
所以在普通模式下,跳到行尾实际上只意味着最后一个字符,因为这是最后一个可以修改的东西。在插入模式下,光标经过最后一个字符,因为之后可以添加内容。
要记住的一件事是,您可以控制最终从正常模式转到插入模式的块的哪一侧
([] 表示块光标在那个 h 上)
Let's say you have t[h]is text
如果此时按下 i,光标将如下所示(在 gvim 中)
(| 是插入模式光标)
Let's say you have t|his text
如果你按下 a 而不是 i,它看起来像这样
Let's say you have th|is text
另一件要记住的事情(如 pavanlimo 提到的),从正常模式下,您可以使用光标在行的第一个字符之前或最后一个字符之后使用 shift-I 或 shift-A 进入插入模式。
关于vim - 进入插入模式时的光标定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3676388/