Perché vim ritarda di un secondo ogni volta che utilizzo il comando 'O' (apro una nuova riga sopra e inserisco)?


26

Quando uso la maggior parte dei comandi, hanno effetto istantaneamente. Quando uso il Ocomando, tuttavia, vedo la "O" sostituire il carattere corrente per circa un secondo, quindi il carattere corrente ritorna e viene inserita e aperta una nuova riga.

Non ho questo problema con il ocomando (apri una nuova riga sotto e inserisci).

Se fa la differenza, sto usando vimda bash, nel Terminale Gnome su Ubuntu 10.04.

Risposte:


27

Se il tasto precedente premuto era ESC, ciò è dovuto al fatto che esistono tasti che possono generare sequenze di escape che iniziano con ESC O. Ad esempio, a seconda della modalità del tasto cursore, il tasto freccia su può generare la sequenza di escape ESC O A.

Se vede una sequenza di escape parziale, vim attenderà un breve timeout per vedere se viene ricevuto un altro personaggio che corrisponde a una delle sequenze di escape definite per il tipo di terminale. Altrimenti tratterà i personaggi come sequenze di tasti separate. Puoi verificarlo inserendo una A maiuscola in attesa dell'apertura della linea per vedere se invece la tratta come una freccia in su.

Ci sono alcune impostazioni di vim che possono essere usate per controllarlo. :set ttimeoutlen=100cambierà il timeout della sequenza di escape su 100ms. :set noesckeysdisabiliterà completamente il riconoscimento dei tasti che inviano una sequenza di escape in modalità inserimento. Inoltre, la modalità compatibile con vi non avrà questo problema perché esckeys è disattivato in quella modalità - ecco perché vim -u NONEfunziona.


Giusto per chiarire, il mio "esperimento" con il file di linea 140k era in modalità vim completa con il mio complemento standard di plug-in e tipi di file. Vedo dove avresti potuto concludere che avevo usato -u NONEma non abbiamo ancora conferma dall'OP.
msw,

Wow! è stato leggermente irritante per un po 'ma non ci ho mai pensato. ha perfettamente senso ora. Esc OA funziona davvero proprio come la freccia in su.
Vitaly Kushner,

2
:set noesckeysprobabilmente non è quello che vuoi - impostalo e poi premi i tasti freccia in modalità inserimento, anche se non hai intenzione di usarli, non vuoi che lo facciano! noesckeys inoltre non accelera le cose al di fuori della modalità di inserimento. ttimeoutlenè sicuramente la strada da percorrere
JonnyRaa,
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.