Dans vim, si j'entre et quitte le mode d'édition sans rien faire, le curseur finit par un caractère à gauche. Et si j'entre et quitte le mode d'ajout, le curseur avance et recule.
Est-il possible de configurer vim pour laisser le signe d'insertion dans ces cas?
Idéalement, je veux juste toujours entrer en mode ajout, mais sans déplacer le curseur lorsque j'entre ou quitte le mode.
(Actuellement, j'utilise généralement le mode insertion car il ne perturbe pas ma position du curseur à l'entrée. C'est-à-dire, sauf lorsque je dois ajouter à la fin de la ligne, auquel cas je jure devant vim de se comporter de manière si archaïque , appuyez sur Echap et entrez en mode ajout.)
i
oua
sans y penser, et peut - être mêmes
,S
,ci"
, etc. au lieu de la limiteri
eta
.Réponses:
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:
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:
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
la source
a
place dei
.<esc>
empêchera en effet la plupart des plugins<esc>
de fonctionner correctement, mais aussi, il continuera de vous ennuyer lorsque vous utiliserez d'autres fonctionnalités standard qui reviennent au mode normal de la même manière<esc>
. Apprendre à utiliser la bonne touche à la volée est la solution qui évolue / fonctionne à long terme.Je pense que par carat, vous entendez votre curseur et si vous utilisez "i" cela insérera directement où se trouve votre curseur, "a" (que je crois que vous recherchez) déplace le curseur d'un caractère vers la droite. En outre, shift-i (I) ira au début de la ligne et shift-a (A) ira jusqu'à la fin de la ligne.
Si j'ai mal compris votre question, je m'en excuse.
la source
Étant donné que le remappage
<ESC>
est considéré comme `` risqué '', je combine simplement avec l'une des approches de la touche Éviter l'évasion et j'ai les éléments suivants dans mon.vimrc
:Remarque: assurez-vous qu'il n'y a pas de caractère espace à la fin de la ligne.
Simple, mais entièrement certifié comme "fonctionne bien pour moi" car c'est exactement ce que je devrais autrement taper à la main.
Que j'utilise
a
oui
que le comportement recule toujours et que cela me dérange le plus souvent, la prochaine chose que je veux taper estd$
de supprimer jusqu'à la fin d'une ligne, etc.la source
Voici ma solution:
C'est marrant. Cette même question existe sur les trois sites: SO, SU, Unix + Linux.
la source