Positionnement du curseur lors de la saisie en mode insertion
Lorsque je passe en mode commande dans Vim, le curseur semble se déplacer d'un caractère en arrière quand c'est à la fin ou sur un mot, et quand je vais à la fin de la ligne avec $
, il ne va pas à la fin effective de la ligne, mais d'un caractère avant la fin du dernier mot, et l
("el") ne pas aller de l'avant et que je dois utiliser la touche flèche pour y arriver.
Je n'ai pas été en mesure de trouver de la documentation de ce comportement, mais cela me semble étrange. Quel est le raisonnement derrière cela (pour ma propre curiosité), et comment puis-je obtenir autour de lui (ou les)?
Vous devez vous connecter pour publier un commentaire.
c'est un peu plus clair si vous utilisez gvim, où le curseur se transforme.
mode d'insertion dans gvim a l'aide du curseur comme une poutre en I, puisque la prochaine lettre que vous tapez sera inséré après l' |. le mode normal est le curseur en forme de bloc, parce que la prochaine chose que vous tapez peut juste l'effet de la lettre qui est actuellement mis en évidence (comme si vous utilisez x, s, etc). Si le mode insertion est en fait l'ajout de texte, mais en mode normal, c'est de modifier le texte d'une certaine façon.
Donc en mode normal, en sautant à la fin de la ligne signifie vraiment: le dernier caractère, puisque c'est la dernière chose qu'il est possible d'être modifié. en mode insertion, le curseur va passé le dernier caractère, car il est possible d'ajouter des choses par la suite.
Une chose à garder à l'esprit est que vous pouvez contrôler de quel côté de la rue, vous retrouver sur la passe du mode normal au mode d'insertion
([] signifie que le curseur est sur que h)
si vous avez appuyé sur je à ce point, le curseur devrait ressembler à ceci (dans gvim)
(| étant le mode d'insertion du curseur)
si vous avez appuyé sur une au lieu de i, il devrait ressembler à ceci
Une autre chose à garder à l'esprit (comme pavanlimo mentionné), du mode normal, vous pouvez passer en mode insertion avec votre curseur juste avant le premier caractère de la ligne, ou juste après le dernier caractère, avec shift-I ou maj-A.
Je ne suis pas tout à fait sûr du raisonnement derrière elle, mais vous pouvez contourner le problème en appuyant sur:
A
. Vous pouvez en lire plus làVous pourriez être intéressés par l'option virtualedit et la valeur suivante:
Avec cette option, vous pouvez déplacer le curseur d'un caractère à la fin de la ligne, puis appuyez sur je en mode insertion, après le dernier caractère.
Cela résout le problème dans un sens, mais personnellement, je trouve ce comportement un peu bizarre. Dans de rares cas, vous rencontrez le problème de sorte qu'il pourrait être intéressant de l'ignorant 😉
C'est parce que toutes les commandes que vous utilisez affectent la lettre le curseur est sur. Si n'est pas judicieux de presse x (supprimer 1 lettre) derrière la lettre.
Il y a en fait pas besoin de déplacer le curseur en mode de commande derrière la dernière lettre, si vous voulez par exemple ajouter, vous pouvez appuyer sur un qui met le curseur derrière la lettre en mode d'insertion.
Il est dépendant de l'implémentation que le curseur peut se déplacer après la fin de la ligne (au moins, c'est une option dans mon éditeur VIM en mode d'émulation). Vous pouvez appuyer sur
a
pour passer en mode insertion et de commencer l'édition d'après le caractère courant dans cette situation (plutôt quei
).Je suggère