Warum verhält sich „Operator“ + „Motion“ inkonsistent?

17

Dies ist etwas, das mich schon lange nervt, aber ich bin nie dazu gekommen, nachzufragen. Angenommen, der Text in Ihrem Puffer sieht folgendermaßen aus:

Hello
World

Wenn ich meinen Cursor irgendwo in Zeile 2 platziere und tue yk, endet mein Cursor in Zeile 1. Dies scheint zu implizieren, dass ein Operator und eine Bewegung den Cursor ebenfalls bewegen. Wenn ich jedoch in Zeile 1 beginne und tue yj, bleibt mein Cursor an derselben Stelle. Die gleiche Inkonsistenz tritt bei vielen Schlüsseln auf.

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

Was ist mit diesem Verhalten? Wird dies erwartet und gut dokumentiert? Gibt es einen Namen dafür? Kann es überschrieben werden?

Im Allgemeinen sieht es so aus, als würde sich "rückwärts bewegen, vorwärts nicht", aber gibt es eine Möglichkeit, mit der ich definitiv feststellen kann, ob ein Operator + Bewegung den Cursor bewegt oder nicht?

DJMcMayhem
quelle
2
yist ein Operator, kein Befehl.
Romainl

Antworten:

16

Von :h operator

Nach dem Anwenden des Operators befindet sich der Cursor meist am Anfang des Texts, der bearbeitet wurde. Zum Beispiel bewegt "yfe" den Cursor nicht, sondern "yFe" bewegt den Cursor nach links zum "e", wo der Ruck begonnen hat.

Was passiert ist, dass der Cursor an den Anfang des Textobjekts bewegt wird. Durch Aktivieren des visuellen Modus wird dies deutlicher. Sie können es sich vorstellen, während der Text ausgewählt wird, bevor er bearbeitet wird. Verwenden Sie, um vbyzu sehen, was ich meine.

Tommy A
quelle