Sono uno sviluppatore di software e come tale utilizzo spesso Terminal.app. L'ho usato per anni. Ad un certo punto nell'ultima settimana o due, ho iniziato a incontrare questo problema un po 'di frequente; Non l'ho mai visto prima.
Uso zsh come shell predefinita. Scriverò un comando complesso. Colpisco return, il comando viene eseguito e vedo che non era esattamente quello che volevo. Premo la freccia su, poi la freccia verso sinistra per la parte che voglio cambiare, e uso delete / backspace per cancellare la parte che voglio cambiare, ma non succede nulla. Non riesco nemmeno a digitare alcun carattere.
Oggi ho scoperto che quando ciò accade, zsh è cambiato in modalità vi. Posso premere i per passare alla modalità di inserimento, x per cancellare un carattere, ecc. Inoltre, posso ripristinare qualcosa di simile alla normalità digitando set -o emacs
. Prima di questa scoperta, avevo appena abbandonato la finestra del terminale in questione e ricominciato da capo. Frustrante!
Non sono sicuro di cosa potrei fare per avviare zsh in modalità vi. Non sto assolutamente digitando set -o vi
! Deve essere un bug o una combinazione di tasti di scelta rapida molto semplice che potrei colpire per sbaglio.
Questo sembra accadere solo allo zsh locale sul mio Mac. Se sono ssh su una macchina Linux remota, usando bash o zsh sulla macchina remota (ho cambiato la mia shell di default su alcuni ma non su tutti i nostri server), non sembra succedere.
Inoltre, ho scoperto che quando apro una nuova finestra di Terminale, non sembra che sia in modalità em o emacs. Si comporta in un modo vagamente emacs-y, ma control + A non salta all'inizio della riga, e la piccola manciata di altri tasti specifici di emacs I Anche familiarità con me non funziona. Se eseguo set -o emacs
, allora quelle cose iniziano a funzionare.
Se eseguo set -o | egrep "on$"
(che elenca le opzioni zsh attualmente abilitate) in un nuovo terminale, né emacs né vi appaiono nei risultati.
Ho controllato la cronologia degli aggiornamenti / delle installazioni nell'App Store e penso che potrebbe essere iniziato quando ho installato Xcode. (Sviluppo principalmente Java e non l'ho installato in precedenza, anche se ho installato gli strumenti di sviluppo.) Non sembra correlato con l'installazione di eventuali aggiornamenti software a livello di sistema.
Ho fatto qualche ricerca su google e non ho trovato alcuna prova che nessun altro abbia incontrato questo problema.
Se è importante, sto usando:
- Fine 2013 27 "iMac.
- 32 GB, 1 TB SSD, 3,5-3,9 GHz i7.
- MacOS High Sierra 10.13.4
- zsh 5.3 (x86_64-apple-darwin17.0)
- Xcode 9.3.1 (installato, ma non sto usando quando è accaduto nulla di tutto ciò)
Quindi, le mie domande:
- qualcuno sa cosa potrei fare per far passare il silenziatore alla modalità vi?
- c'è un'impostazione che posso cambiare in modo che questo si fermi?
- c'è qualche registro o altro output diagnostico che posso abilitare per renderlo più ovvio quando succede?
- cos'è questa modalità di input non-emacs, non-vi che sto vedendo in una nuova finestra di terminale / processo zsh chiamata?