Qu'est-ce que je fais pour que zsh change silencieusement en mode vi?


0

Je suis un développeur de logiciels et, à ce titre, j'utilise fréquemment Terminal.app. Je l'utilise depuis des années. Au cours de la semaine ou des deux dernières semaines, j'ai commencé à rencontrer ce problème assez fréquemment. Je ne l'ai jamais vu auparavant.

J'utilise zsh comme shell par défaut. Je vais taper une commande complexe. Je frappe le retour, la commande s'exécute, et je vois que ce n'était pas exactement ce que je voulais. J'ai appuyé sur la flèche vers le haut, puis sur la flèche gauche de la partie que je souhaite modifier, et j'utilise delete / backspace pour supprimer la partie que je souhaite modifier, mais rien ne se produit. Je ne peux pas non plus taper de caractères.

Aujourd'hui, j'ai découvert que lorsque cela se produisait, zsh était passé en mode vi. Je peux frapper je passer en mode insertion, X supprimer un caractère, etc. De plus, je peux restaurer quelque chose qui ressemble à la normalité en tapant set -o emacs. Avant cette découverte, je venais d'abandonner la fenêtre du terminal en question et de recommencer à zéro. Frustrant!

Je ne suis pas sûr de ce que je pourrais faire pour lancer zsh en mode vi. Je ne suis pas en train de taper set -o vi! Ce doit être soit un bug, soit une combinaison de touches très simple que je pourrais frapper par accident.

Cela ne semble arriver qu'au zsh local sur mon Mac. Si je suis sur une machine Linux distante en utilisant bash ou zsh sur la machine distante (j'ai changé mon shell par défaut sur certains de nos serveurs, mais pas tous), cela ne semble pas se produire.

De plus, j'ai découvert que lorsque j'ouvre une nouvelle fenêtre de terminal, elle ne semble pas être en vi ou Mode Emacs. Il se comporte de manière vaguement emacs-y, mais contrôle + UNE ne saute pas au début de la ligne, et la petite poignée d’autres frappes spécifiques à Emacs que je connais aussi ne fonctionne pas. Si je cours set -o emacs, alors ces choses commencent à fonctionner.

Si je cours set -o | egrep "on$" (qui répertorie les options zsh actuellement activées) dans un nouveau terminal, ni emacs ni vi n'apparaissent dans les résultats.

J'ai parcouru l'historique de mes mises à jour / installations dans l'App Store et je pense que cela a peut-être commencé lorsque j'ai installé Xcode. (Je développe principalement des éléments Java et je ne les avais pas déjà installés, bien que les outils de développement aient été installés.) Cela ne semble pas être en corrélation avec l'installation de mises à jour logicielles au niveau du système.

J'ai fait des recherches sur Google et je n'ai trouvé aucune preuve que quelqu'un d'autre ait rencontré ce problème.

Si cela compte, j'utilise:

  • Fin 2013 27 "iMac.
  • SSD de 32 Go, 1 To, 3,5-3,9 GHz i7.
  • MacOS High Sierra 10.13.4
  • zsh 5.3 (x86_64-apple-darwin17.0)
  • Xcode 9.3.1 (installé, mais je ne suis pas en utilisant quand tout cela est arrivé)

Alors, mes questions:

  1. Quelqu'un sait-il ce que je pourrais faire pour que le passage en mode silencieux passe en mode vi?
  2. Y at-il un paramètre que je peux changer pour que cela cesse de se produire?
  3. puis-je autoriser une journalisation ou une autre sortie de diagnostic pour que cela soit plus évident lorsque cela se produit?
  4. Quel est ce mode de saisie non-emacs, non-vi que je vois dans un nouveau processus fenêtre / zsh de terminal appelé?

Réponses:


1

Soupir. En explorant davantage ma propre situation, je pense que je frappais échapper . Je pense que zsh était dans vi le mode tout au long, mais plus précisément, il était en mode insertion de vi! Si je vais à un nouvel éditeur et frappe échapper Je me trouve en mode de commande de vi.

Si tel est le cas, je suis toujours intéressé de savoir pourquoi set -o | egrep "on$" n'indique pas que nous sommes en mode vi.

EDIT: double soupir. A l'origine, j'avais écrit ma question avec toutes les références à bash, après avoir complètement oublié qu'il y a des années, j'ai changé mon shell par défaut en zsh, qui est la plupart le même. Je suis retourné et ai édité la question pour être plus clair, puis googlé encore, remplaçant bash par zsh. J'ai vite trouvé ceci: https://unix.stackexchange.com/questions/197839/why-does-exporting-vim-as-editor-in-zsh-disable-keyboard-shortcuts

Et voilà, mon .profile a EDITOR=vique j’y ai mis il ya environ deux semaines. J'ai enlevé cette ligne, et frapper échapper ne me met plus en mode de commande vi.

Mieux encore, j'ai suivi les instructions données dans cette réponse et j'ai pu restaurer mon paramètre EDITOR sans passer outre zsh. Yay! :)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.