Antworten:
Gute Frage!
Als Bewegung für sich allein haben Sie recht, _
ist kein besonders nützlicher Schlüssel.:h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
Das Schlüsselwort hier ist "linewise". Also , wenn Ihr Ziel ist es , nur den Cursor zu bewegen, dann ^
, j
und +
alle den Job zu erledigen, und es gibt nicht viel Sinn zu _
. Aber als Argument für einen Operator, _
ist super mächtig.
Viele Tastenkombinationen sind eigentlich nur Abkürzungen für _
. Beispielsweise,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
usw. Da es sich um eine linienweise Bewegung handelt, wird im Grunde genommen die gesamte zu bearbeitende Linie ausgewählt, unabhängig davon, wo der Cursor beginnt, wohingegen ^
nur von Ihrem Charakter zum ersten nicht leeren Bereich übergegangen wird.
Es hilft mir, wenn ich über lineare oder blockweise Bewegungen nachdenke, mir vorzustellen, dass ich entweder v
oder V
direkt vor der Bewegung drücke . Also stelle ich mir d^
vor, äquivalent zu sein v^d
und ich stelle mir d_
vor, äquivalent zu V_d
oder zu sein V^d
. Natürlich können Sie eine Bewegung auch außer Kraft setzen, um die Linien- oder Zeichenweise zu erzwingen. Ist dv_
also eigentlich genauso wie d^
oder v^d
, und dVw
ist wie Vwd
was genau so ist d_
.
Der Grund, warum es speziell die "count-1th" -Zeile ist, ist, dass 1dd
(was wirklich ist d1_
) eine ganze Zeile löscht, 2dd
(was wirklich ist d2_
) 2 ganze Zeilen 3dd
löscht, 3 ganze Zeilen löscht usw.
dd
ist vielleicht praktischer als d_
, aber das liegt daran, dass dd
es sich nur um eine Zuordnung handelt d_
. Und es ist auch nützlich in Vimscript.
gUU
? Ich denke, es lohnt sich, ein aktuelles Beispiel zu finden, in dem <operator>_
es verwendet wird.
dd
ist einfacher alsd_
und3yj
ist einfacher als4y_
.