Cette question est fréquemment posée parmi les nouveaux utilisateurs de vi / Vim, et la réponse est qu'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, la fin -of-line est un caractère). Vous ne pouvez pas vraiment voir cela illustré aussi dans la console Vim, mais dans l'interface graphique, vous remarquerez que le curseur devient une barre entre deux caractères lorsque vous entrez en mode insertion, au lieu d'un bloc sur un caractère lorsque vous êtes en mode normal.
Donc, 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 se déplace simplement sur un personnage. La seule direction de mouvement sûre est vers la gauche (ou vers l'arrière). Ainsi, vous avez plus d'une façon d'entrer en mode d'insertion:
- "a" passe en mode d'insertion avec le curseur "entre" le caractère sur lequel se trouvait le curseur et le caractère suivant à droite.
- "i" passe en mode d'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 cela interfère inévitablement avec les plugins et autres scripts Vim qu'ils souhaitent exécuter à l'avenir.
Ma suggestion est de s'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
Modifier: si vous êtes toujours déterminé à changer ce comportement, essayez cette astuce: Empêcher échapper de déplacer le curseur d'un caractère vers la gauche