在vim中,当我离开编辑模式时防止插入符号移回?

Rom*_*nSt 9 vim

在 vim 中,如果我没有做任何事情就进入和离开编辑模式,插入符号会在左边一个字符结束。如果我进入和离开追加模式,插入符号向前移动然后向后移动。

在这些情况下,有什么方法可以配置 vim 以单独留下插入符号?

理想情况下,我只想始终进入附加模式,但在进入或退出模式时不移动插入符号。

(目前我通常使用插入模式,因为它不会在输入时弄乱我的插入符号位置。也就是说,除非我需要追加到行尾,在这种情况下,我向 vim 发誓以这种古老的方式行事, 按 Esc 并进入追加模式。)

Hep*_*ite 9

这个问题在新的 vi/Vim 用户中经常被问到,答案是在正常模式下,光标总是“在”一个字符上,但在插入模式下,光标总是在两个字符“之间”(记住,结束-of-line 是一个字符)。在控制台 Vim 中您无法真正看到这一点,但是在 GUI 中,您会注意到当您进入插入模式时,光标变成两个字符之间的条,而不是在正常模式下的字符上的块。

因此,当您离开插入模式时,您所看到的不一定是光标向后移动一个字符,而只是移动到一个字符上。唯一安全的移动方向是向左(或向后)。因此,您可以通过多种方式进入插入模式:

  • “a”进入插入模式,光标位于光标所在的字符和右侧的下一个字符之间。
  • “i”进入插入模式,光标“介于”光标所在的字符和左边的前一个字符之间。

有些人努力压制这种他们不喜欢的“运动”,但它不可避免地干扰了他们以后想要运行的插件和其他 Vim 脚本。

我的建议是习惯在适当的情况下使用“a”和“i”(以及“A”和“I”)命令。

学习“o”和“O”命令也很有用。看:

:help a
:help i
:help A
:help I
:help o
:help O
Run Code Online (Sandbox Code Playgroud)

编辑:如果您仍然决定更改此行为,请尝试以下提示:防止将光标向左移动一个字符进行转义

  • @romkyns:我认为你应该做的是使用 `a` 而不是 `i`。 (2认同)