Vim中追加模式和插入模式的区别

66

我在玩vimtutor时无意中发现了这个问题。Vim中“append”和“insert”模式有什么区别?当我在正常模式下键入a(而不是A)时,我可以插入文本。何时应该使用其中一个而不是另一个?


除了 m0j0Priest 的帖子之外,$ 符号也会移动到行尾,但不会进入插入模式。 - kolo
3个回答

96

append 命令会将光标放在当前位置的 后面,而 insert 命令会将光标放在它的 前面

使用 append 命令就像把光标向右移动一个字符,使用 insert 命令。

使用 insert 命令就像把光标向左移动一个字符,使用 append 命令。

根据您想要开始输入文本的位置选择使用哪个命令。


2
光标真的向左移动吗?我更认为它只是停留在原地。状态行也显示了这一点。不过,一旦回到正常模式,它肯定会向左移动。 - d11wtq
11
请考虑光标位于文本中的一个字符上方。插入会使插入点向左移动,附加将放置在该字符的右侧。 - dash-tom-bang
1
区别在gVim中更加明显,插入模式光标是一个垂直条,位于字符之间,就像其他GUI编辑器一样,但命令模式光标仍然是一个完整字符周围的矩形。 - Jack O'Connor
1
另外一个要点:除了在插入模式下使用箭头键之外,您不能使用 iI 在一行的末尾添加文本,也不能使用 aA 在一行的开头添加文本。当然,在 Vim 中永远不应该使用箭头键,这就是拥有插入和附加的重要性的原因之一。 - lwassink
这种行为与其他大多数文本模式应用程序(例如终端)相比是否有任何优势,其中插入点始终位于光标左侧,光标可以移动到行末超出一步? - Åsmund

48

请注意,vimtutor 最初并没有明显提示命令的大小写:

SHIFT+A(大写的 A,而不是小写)将光标移动到当前行的末尾

SHIFT+I(大写的 I,而不是小写)将光标移动到当前行的开头。


7
我认为这应该被修复。我刚刚因此受骗了。 - Flamefire
5年过去了,问题仍然存在。 - undefined

-1

Append 的另一个重要方面是,如果当前位置之后的位置是一个空格,后面跟着一个单词,那么在你完成写作后,它将连接这两个单词。

例如,一个包含以下文本的文件:

Hi there.

光标停留在 i 上。按下 a 按钮然后按下 ESC 后,你会得到:

Hithere。


1
你是对的。我猜那只发生在我当时使用的模拟器上。 - Fernando Abreu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接