Pourquoi «Opérateur» + «Mouvement» se comporte-t-il de manière incohérente?

17

C'est quelque chose qui me dérange depuis longtemps, mais je ne me suis jamais posé la question. Supposons que le texte dans votre tampon ressemble à ceci:

Hello
World

Si je mets mon curseur quelque part dans la ligne 2, et que je le fais yk, mon curseur se terminera sur la ligne 1. Cela semble impliquer qu'un opérateur plus un mouvement déplace également le curseur. Cependant, si je commence sur la ligne 1 et que je le fais yj, mon curseur reste au même endroit. La même incohérence se produit avec de nombreuses clés.

Moves   Doesn't move
gg      G
h       l
{       }
(       )
T       t
F       f
?       /

Alors, quel est ce comportement? Est-ce prévu et bien documenté? Y a-t-il un nom pour cela? Peut-il être annulé?

En général, il semble que "recule, pas en avant", mais existe-t-il un moyen de dire définitivement si un opérateur + mouvement déplacera ou non le curseur?

DJMcMayhem
la source
2
yest un opérateur, pas une commande.
romainl

Réponses:

16

De :h operator

Après avoir appliqué l'opérateur, le curseur est généralement laissé au début du texte qui a été opéré. Par exemple, "yfe" ne déplace pas le curseur, mais "yFe" déplace le curseur vers la gauche jusqu'au "e" où le tirage a commencé.

Ce qui se passe, c'est que le curseur est déplacé au début de l'objet texte. L'activation du mode visuel le rendra plus apparent. Vous pouvez y penser que le texte est sélectionné avant d'être utilisé. Utilisez vbypour voir ce que je veux dire.

Tommy A
la source