quando si esegue la schermata su OSX, il comando + r confonde i tasti freccia in vim su tutte le schermate


15

Come si svolge questo? perché finisci per premere il comando r tutto il tempo per ricaricare il tuo browser, e spesso sei nel terminale.

Dal momento che non ho capito come riattivare i tasti freccia, attualmente uccido tutti i miei schermi e riavvio dello schermo, il che è una seccatura.

Risposte:


28

Come un buon piccolo sostenitore di Vim, mi sento obbligato a dirti di imparare a usare hjkl come i tasti cursore. A metà dell'esplorazione del problema, ho pensato che si fosse misteriosamente risolto da solo, fino a quando mi sono reso conto che stavo testando usando hjkl invece dei veri tasti freccia.

Comunque, ora per una vera risposta.

Invece di spegnere tutti gli schermi e riavviare, puoi sfruttare la capacità dello schermo di spostarsi tra i terminali. Premi CTRL+A CTRL+Dper staccare lo schermo dal tuo terminale, quindi corri screen -D -Rper ricollegarlo. Questo dovrebbe far funzionare nuovamente i tasti freccia.

Se non sei sullo schermo, ma solo su Vim, puoi CTRL+Ze digitare fgper lo stesso effetto.

Potresti anche aggirare il problema del tasto cursore in Vim, ma il ripristino potrebbe aver modificato altre opzioni del terminale, quindi è più sicuro fare come descritto sopra per non vedere altri problemi di visualizzazione / tastiera casuali. Se vuoi comunque i rimappaggi, eccoli qui:

map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

Dettagli sporchi:

Sia Vim che lo schermo usano la libreria ncurses per gestire il terminale. Una delle cose che ncurses sta facendo quando assume il controllo di un terminale compatibile con VT100 è la commutazione dei tasti freccia in "modalità applicazione", che modifica i codici che emettono. Il tasto freccia su, ad esempio, cambia da Esc [ Aa Esc O A. Il codice di controllo VT100 che emette per farlo è Esc [ ? 1 h. Il comando di reimpostazione del terminale inviato da Command + R ripristina i tasti cursore sui valori predefiniti.

Staccare e ricollegare lo schermo fa sì che ncurses riprenda il controllo del terminale, riapplicando tutte le impostazioni che gli piacciono, quindi è probabilmente il modo più portatile e affidabile per ripristinare le cose alla normalità.

Codici di controllo VT100: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm


Un altro problema potrebbe essere il tipo di terminale che confonde vim, vedi Chiavi incasinate in vim quando si esegue all'interno di tmux
— kynan

grazie per questa soluzione! questo mi ha infastidito come sviluppatore web. nel browser hai colpito molto cmd-r per aggiornare lo schermo e ogni tanto dovevo aver colpito cmd-r in modo casuale per caso. non riuscivo a capire perché i miei tasti freccia fossero stati cancellati fino ad ora. e per te i puristi di hjkl là fuori, il motivo principale per cui non uso hjkl è perché non sono disponibili per il movimento del cursore in modalità inserimento. risolvi il problema e riconsidererò.
— rev


1

Se stai usando iTerm, puoi riavere la tua sessione vim premendo command+decommand+w

Perché?

command+d dividerà il pannello dei terminali, ripristinando magicamente quello da cui provenite.

command+w ora chiuderà quel riquadro diviso che hai appena aperto.


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.