2013-02-06 7 views
23

A volte uso vim per modificare rapidamente un file di testo e spesso inserisco erroneamente la sequenza C-x C-s di Emacs per salvarlo, dopodiché il mio vim non risponde scrivendo ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) nella riga di stato. C'è forse un modo per rendere ancora una volta vim reattivo, perché davvero infastidisce dover uccidere il terminale e poi ricominciare tutto da capo?Vim non risponde dopo una sequenza C-x C

risposta

32

Provare a digitare ^Q.

^S e ^Q sono i "stop" di default e "start" caratteri nelle impostazioni TTY.

(vim dovrebbe essere manipolare le impostazioni TTY così il controllo-S non si ferma in uscita, ma ho visto i sistemi in cui non. Sì, è fastidioso.)

+0

Ha fatto il lavoro. Grazie. – Maputo

7

Si tratta di un antico Unixism che consente di interrompere l'output di un programma con ^S e avviarlo di nuovo con ^Q, dal giorno in cui lo schermo si aggiornava abbastanza lentamente che una cosa del genere sarebbe stata utile. Consideralo come una versione estremamente arcaica di less o more.

È possibile digitare ^Q per avviare di nuovo il programma di uscita, oppure disattivare questo meccanismo ormai quasi-inutile con l'aggiunta di questo alla vostra ~/.bashrc:

# Are we on a terminal? 
if [ -t 0 ]; 
then 
    stty sane 
    stty stop '' 
    stty start '' 
    stty werase '' 
fi 
+0

'.bashrc' aggiornato. Grazie. – Maputo

+0

Ho 'stop' e' start' impostato su '^ S' e'^Q', rispettivamente, ma posso ancora scrivere '^ S' in vim senza fermare l'output, quindi i comandi suggeriti' stty' non sembrano essere necessario Ma penso di aver avuto problemi simili sul mio sistema Debian 6.0.6 al lavoro. Cercherò di capire qual è la differenza. –