Cette question est fréquemment posée par les nouveaux utilisateurs de vi/Vim. La réponse est la suivante : en mode normal, le curseur est toujours "sur" un caractère, mais en mode insertion, le curseur est toujours "entre" deux caractères (rappelez-vous que la fin de ligne est un caractère). Vous ne pouvez pas vraiment voir cela illustré aussi bien dans la console Vim, mais dans l'interface graphique, vous remarquerez que le curseur devient une barre entre deux caractères lorsque vous passez en mode insertion, au lieu d'un bloc sur un caractère lorsque vous êtes en mode normal.
Ainsi, ce que vous voyez n'est pas nécessairement le curseur qui recule d'un caractère lorsque vous quittez le mode d'insertion, mais simplement le déplacement sur un caractère. La seule direction de déplacement sûre est la gauche (ou l'arrière). Vous avez donc plus d'une façon d'entrer en mode insertion :
- "a" entre en mode insertion avec le curseur "entre" le caractère sur lequel se trouvait le curseur et le caractère suivant à droite.
- "i" entre en mode insertion avec le curseur "entre" le caractère sur lequel se trouvait le curseur et le caractère précédent à gauche.
Certaines personnes ont fait des efforts pour supprimer ce "mouvement" qu'elles n'aiment pas, mais il interfère inévitablement avec les plugins et autres scripts Vim qu'elles veulent exécuter à l'avenir.
Je vous suggère de vous habituer à utiliser les commandes "a" et "i" (et "A" et "I") dans les circonstances appropriées.
Les commandes "o" et "O" sont également utiles à apprendre. Voir :
:help a
:help i
:help A
:help I
:help o
:help O
Edit : Si vous êtes toujours déterminé à changer ce comportement, essayez cette astuce : Empêcher l'échappement de déplacer le curseur d'un caractère vers la gauche.