No modo de inserção, o cursor está entre os caracteres ou antes do primeiro ou após o último caractere. No modo normal, o cursor está sobre um caractere (novas linhas não são caracteres para esse propósito). Isso é um tanto incomum: a maioria dos editores sempre coloca o cursor entre os caracteres e tem a maioria dos comandos atuando no caracter após (não, estritamente falando, sob ) o cursor. Isso talvez se deva em parte ao fato de que, antes das GUIs, os terminais de texto sempre mostravam o cursor em um caractere (sublinhado ou em bloco, talvez piscando). Essa abstração falha no modo de inserção porque isso requer mais uma posição (posts vs cercas).
Alternar entre modos tem que mover o cursor por meio-caractere, por assim dizer. O comando i
se move para a esquerda, para colocar o cursor antes do caractere que acabou. O comando a
se move para a direita. Sair do modo de inserção (pressionando Esc ) move o cursor para a esquerda, se possível (se estiver no início da linha, ele será movido para a direita).
Suponho que o tipo de comportamento Esc faz sentido. Muitas vezes, você está digitando no final da linha, e lá Esc só pode ir para a esquerda. Então, o comportamento geral é o comportamento mais comum.
Pense no caractere sob o cursor como o último caractere interessante e no comando de inserção como a
. Você pode repetir a Esc sem mover o cursor, exceto que você será atingido em uma posição à direita se você começar no início de uma linha não vazia.