Speed ​​bump su <Esc> O (Inserisci in normale per inserire una nuova riga sopra il cursore)


16

Spesso quando sono in modalità Inserisci, premo Escper entrare in modalità Normale, quindi premo immediatamente Oper iniziare una nuova linea sopra il cursore e andare in modalità Inserisci lì.

Ma quando lo faccio, c'è un ritardo di 1 secondo dopo aver premuto il tasto Oprima che ci sia una risposta visibile. Inoltre se inizio a digitare il nuovo testo durante quel 1 secondi di ritardo, se il nuovo testo inizia con uno qualsiasi di un certo insieme di caratteri (ad esempio j, k, m, n, o), finisco nel mezzo di qualche altra operazione non ho Intendo, spesso facendo un casino, a quel punto devo fermarmi e armeggiare con annullamenti e ripetizioni finché non sono ragionevolmente sicuro di aver annullato il danno.

Per evitare quella spiacevolezza, ho preso l'abitudine di fermarmi un secondo dopo ogni volta che scrivo O. Ma questo mi rallenta e mi impedisce di essere il demone della velocità di Vim che altrimenti sarei.

Cosa causa questo? C'è una soluzione o una soluzione?

Risposte:


15

Questo succede solo nel terminale, ma non in GVIM, giusto? Il motivo è che Vim non è in grado di distinguere tra i singoli tipi di chiavi e una sequenza di escape ANSI che inizia con gli stessi tasti (vale a dire ^[O..., <Esc>seguita da Onel tuo caso).

Puoi leggere tutte le complessità sottostanti su :help 'timeout'(e seguenti opzioni). Qui trovi anche una configurazione suggerita che allevia il problema:

:set timeout timeoutlen=1000 ttimeoutlen=100

3
Puoi anche usare set noesckeys; questo ha l'effetto collaterale di disabilitare i tasti freccia (e forse alcuni altri tasti?) nella modalità Inserisci, quindi potrebbe non essere adatto a tutti.
Martin Tournoij,

2
@Carpetsmoker Per quanto riguarda "set noesckeys" ... che funziona, ma solo se in modalità Inserisci. So di aver detto che ero in modalità Inserisci per cominciare; tuttavia faccio spesso anche <Esc> O partendo dalla modalità Normale (principalmente quando non sono sicuro al 100% se sto iniziando in modalità Inserisci o Normale), quindi mi piacerebbe qualcosa che funzioni anche in quel caso.
Don Hatch,

1
@DonHatch È possibile utilizzare :nnoremap ^[O O, dove ^[viene inserito premendo <C-v><Esc>(può anche apparire come <1b>).
Martin Tournoij,

5

Come soluzione alternativa, invece di ESCO, utilizzare Control+ OO. I Control+ Oti mette in modalità normale per un solo comando, poi torna alla modalità di inserire quando è fatto.


1

Che ne dite di:

Control+C O

Ci sono alcune sottigliezze quando usi Control+ di Ccui dovresti essere a conoscenza.

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.