Perché il comando underscore _ è utile?


15

Sono un po 'perplesso sul perché il comando underscore _, che salta all'inizio della riga (COUNT - 1) sotto il cursore, ottenga la sua chiave. Quando dovrei usare questo anziché +o ^?

Risposte:


16

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 ^, je +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 vo Vproprio prima del movimento. Quindi immagino d^di essere equivalente a v^de immagino d_di essere equivalente a V_do 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 Vwdche è 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, 3ddelimina 3 intere righe, ecc.


1
Va bene, ma lo userei davvero? ddè più facile di d_ed 3yjè più facile di 4y_.
Toothrot,

5
@toothrot Se stavi creando il tuo operatore e volessi operare sulle successive n righe.
DJMcMayhem

5
@Toothrot Immagino di volerlo chiarire un po '. Nella modifica quotidiana di VIM, no, non è davvero particolarmente utile. Neanche l'ho mai usato. Il motivo per cui è utile è perché è la definizione di molti comandi utili. ddpotrebbe essere più conveniente di d_, ma è perché ddè solo una mappatura per d_. Ed è anche utile in vimscript.
DJMcMayhem

9
Alcune azioni che agiscono su un "movimento" potrebbero non avere altre scorciatoie. Qualcosa come "gU_" renderà maiuscolo tutto sulla riga corrente, anche se il cursore non si trova all'inizio della riga.
bmb,

1
@bmb Che dire gUU? Penso che varrebbe la pena trovare un esempio reale di dove <operator>_sarebbe usato.
Hotschke,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.