Comprensione della combinazione CTRL-U


19

In questa risposta ho affrontato la CTRL-Uchiamata di funzione utilizzata dopo :e prima del nome della funzione effettiva.

:nnoremap <buffer> <cr> :<C-U>call append('.', repeat([''],v:count1))<cr>

Ecco cosa dice l'aiuto:

CTRL-U      Scroll window Upwards in the buffer.  The number of
            lines comes from the scroll option (default: half a
            screen).  If [count] given, first set the 'scroll'
            option to [count].

L'ho provato da solo e ha funzionato come immaginavo. Ma non ho capito bene la parte scrollsull'opzione. Cosa significano 'scroll' option?

E inoltre fa qualcosa di strano in modalità inserimento. Per quanto ho capito, cancella tutto dal cursore all'inizio della linea e quindi unisce la linea risultante e la linea sopra.

Risposte:


27

Guida, per impostazione predefinita, restituisce tutti i mapping che si applicano alla modalità normale. In modalità normale, <C-u> fa scorrere verso l'alto, ma non è quello che siamo in interessati. Per vedere cosa <C-u>fa in modalità riga di comando, o cmode , (il modo in cui si digitano i comandi che iniziano con i due punti) di ricerca:h c_CTRL-u

                            *c_CTRL-U*
CTRL-U      Remove all characters between the cursor position and
        the beginning of the line.  Previous versions of vim
        deleted all characters on the line.  If that is the
        preferred behavior, add the following to your .vimrc: >
            :cnoremap <C-U> <C-E><C-U>

Per capire perché questo è utile per una normale mappatura della modalità, prova a rimuoverla, prova a digitare qualcosa di simile 5:e guarda cosa succede. Dovresti vedere qualcosa del tipo:

:.,.+4

Questa è una gamma

Ora prova a digitare 5:<C-u>e guarda cosa succede. Dovresti solo vedere

:

Allo stesso modo in modalità visiva, premendo si :inserisce l'intervallo

:'<,'>

Ecco perché vedrai molto spesso mappature come:

nnoremap foo :<C-u>bar

o

xnoremap foo :<C-u>bar
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.