Cosa sto facendo che fa sì che zsh cambi in modo silenzioso in modalità vi?

0

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:

  1. qualcuno sa cosa potrei fare per far passare il silenziatore alla modalità vi?
  2. c'è un'impostazione che posso cambiare in modo che questo si fermi?
  3. c'è qualche registro o altro output diagnostico che posso abilitare per renderlo più ovvio quando succede?
  4. cos'è questa modalità di input non-emacs, non-vi che sto vedendo in una nuova finestra di terminale / processo zsh chiamata?
posta JakeRobb 29.05.2018 - 22:25
fonte

1 risposta

1

Sigh. Esplorando ulteriormente la mia situazione, penso di aver colpito escape . Penso che zsh fosse in modalità vi per tutto il tempo, ma più specificamente, era nella modalità di inserimento di vi! Se vado a un editor nuovo di zecca e prendo escape , mi trovo nella modalità di comando di vi.

Se è così, sono comunque interessato a sapere perché set -o | egrep "on$" non indica che siamo in modalità vi.

EDIT: doppio sospiro. Originariamente ho scritto la mia domanda con tutti i riferimenti a bash, avendo completamente dimenticato che anni fa ho cambiato la mia shell di default in zsh, che è principalmente la stessa. Sono tornato indietro e ho modificato la domanda per essere più chiara, quindi ho cercato nuovamente su google, sostituendo bash con zsh. Ho trovato rapidamente questo: link

Ecco, il mio .profile ha EDITOR=vi , che ho messo lì circa due settimane fa. Ho rimosso quella linea, e premendo escape non mi metto più in modalità comando vi.

Ancora meglio, ho seguito le istruzioni fornite su quella risposta e sono stato in grado di ripristinare le impostazioni di EDITOR senza avviare zsh. Sìì! :)

    
risposta data 29.05.2018 - 22:32
fonte

Leggi altre domande sui tag