Risposte:
Buona domanda!
Come movimento da solo, hai ragione, _
non è una chiave particolarmente utile.:h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
La parola chiave qui è "linewise". Quindi, se il vostro obiettivo è quello di spostare semplicemente il cursore, quindi ^
, j
e +
ottenere tutto il lavoro fatto, e non c'è molto punto a _
. Ma come argomento per un operatore, _
è super potente.
Molte scorciatoie a doppio tasto sono in realtà solo scorciatoie per _
. Per esempio,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
ecc. Poiché si tratta di un movimento lineare, seleziona sostanzialmente l'intera linea su cui operare indipendentemente dal punto in cui inizia il cursore, mentre ^
passa dal carattere al primo non vuoto.
Mi aiuta quando penso a movimenti lineari contro blocchi di senso immaginare che sto premendo uno v
o V
proprio prima del movimento. Quindi immagino d^
di essere equivalente a v^d
e immagino d_
di essere equivalente a V_d
o V^d
. Ovviamente, puoi anche ignorare un movimento per forzarlo in modo lineare o caratteristico. Quindi dv_
in realtà è esattamente la stessa d^
o v^d
, e dVw
è come Vwd
che è esattamente come d_
.
La ragione per cui è specificamente la riga "count-1th" è che 1dd
(che è davvero d1_
) elimina un'intera riga, 2dd
(che è realmente d2_
) elimina 2 intere righe, 3dd
elimina 3 intere righe, ecc.
dd
potrebbe essere più conveniente di d_
, ma è perché dd
è solo una mappatura per d_
. Ed è anche utile in vimscript.
gUU
? Penso che varrebbe la pena trovare un esempio reale di dove <operator>_
sarebbe usato.
dd
è più facile did_
ed3yj
è più facile di4y_
.