Warum ist der Unterstrich-Befehl _ nützlich?

15

Ich bin ein bisschen verwirrt, warum der Unterstrich-Befehl _, der an den Anfang der (COUNT - 1) -ten Zeile unter dem Cursor springt, eine eigene Taste bekommt. Wann würde ich dies eher als +oder verwenden ^?

Toothrot
quelle

Antworten:

16

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 ^, jund +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 voder Vdirekt vor der Bewegung drücke . Also stelle ich mir d^vor, äquivalent zu sein v^dund ich stelle mir d_vor, äquivalent zu V_doder 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 dVwist wie Vwdwas 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 3ddlöscht, 3 ganze Zeilen löscht usw.

DJMcMayhem
quelle
1
Okay, aber würde ich es jemals wirklich benutzen? ddist einfacher als d_und 3yjist einfacher als 4y_.
Toothrot
5
@toothrot Wenn Sie einen eigenen Operator erstellen und die nächsten n Zeilen bearbeiten möchten .
DJMcMayhem
5
@Toothrot Ich denke, ich möchte das ein wenig klären. Bei der täglichen Bearbeitung von Videos ist dies nicht besonders nützlich. Ich habe es auch fast nie benutzt. Der Grund, warum es nützlich ist, ist, dass es die Definition vieler nützlicher Befehle ist. ddist vielleicht praktischer als d_, aber das liegt daran, dass ddes sich nur um eine Zuordnung handelt d_. Und es ist auch nützlich in Vimscript.
DJMcMayhem
9
Einige Aktionen, die auf eine "Bewegung" wirken, verfügen möglicherweise nicht über andere Verknüpfungen. So etwas wie "gU_" schreibt alles in der aktuellen Zeile in Großbuchstaben, auch wenn sich der Cursor nicht am Anfang der Zeile befindet.
bmb
1
Was ist mit gUU? Ich denke, es lohnt sich, ein aktuelles Beispiel zu finden, in dem <operator>_es verwendet wird.
Hotschke