Essa pergunta é feita com frequência entre os novos usuários do vi / Vim, e a resposta é que, enquanto no modo normal, o cursor está sempre "ligado" a um caractere, mas no modo de inserção o cursor está sempre "entre" dois caracteres , o fim-de-linha é um personagem). Você não pode realmente ver isso ilustrado também no console Vim, mas na GUI você notará que o cursor se torna uma barra entre dois caracteres quando você entra no modo de inserção, em vez de um bloco sobre um caractere quando você está no modo normal.
Então, o que você está vendo não é necessariamente o cursor movendo um caractere de volta quando você sai do modo de inserção, mas apenas movendo-se para um caractere. A única direção segura do movimento é para a esquerda (ou para trás). Assim, você tem mais de uma maneira de inserir o modo de inserção:
- "a" entra no modo de inserção com o cursor "entre" o caractere em que o cursor estava e o próximo caractere à direita.
- "i" entra no modo de inserção com o cursor "entre" o caractere em que o cursor estava e o caractere anterior à esquerda.
Algumas pessoas têm se esforçado para suprimir esse "movimento" de que não gostam, mas isso inevitavelmente interfere em plugins e outros scripts do Vim que eles querem executar no futuro.
Minha sugestão é me acostumar a usar os comandos "a" e "i" (e "A" e "I") nas circunstâncias apropriadas.
Os comandos "o" e "O" também são úteis para aprender. Veja:
:help a
:help i
:help A
:help I
:help o
:help O
Editar: Se você ainda está determinado a mudar esse comportamento, tente esta dica: Impedir o escape de mover o cursor um caractere para o esquerda