5 votos

¿Qué estoy haciendo que provoca que zsh cambie silenciosamente al modo vi?

Soy un desarrollador de software y, como tal, utilizo Terminal.app con frecuencia. Lo he estado utilizando durante años. En algún momento de la última semana o dos, comencé a encontrar este problema con cierta frecuencia; nunca lo había visto antes.

Uso zsh como mi shell predeterminado. Estaré escribiendo un comando complejo. Presiono retorno, el comando se ejecuta, y veo que no era exactamente lo que quería. Presiono la flecha hacia arriba, luego la flecha hacia la izquierda hasta la parte que quiero cambiar, y uso eliminar/borrar para limpiar la parte que quiero cambiar, pero no sucede nada. Tampoco puedo escribir ningún carácter.

Hoy, descubrí que cuando esto sucede, zsh ha cambiado al modo vi. Puedo presionar i para cambiar a modo de inserción, x para borrar un carácter, etc. Además, puedo restaurar algo parecido a la normalidad escribiendo set -o emacs. Antes de este descubrimiento, simplemente abandonaba la ventana del Terminal en cuestión y empezaba de nuevo. ¡Frustrante!

No estoy seguro de qué podría estar haciendo para cambiar zsh al modo vi. ¡Definitivamente no estoy escribiendo set -o vi! Tiene que ser o un error o una combinación de teclas muy simple que podría estar presionando accidentalmente.

Esto parece suceder solo en el zsh local de mi Mac. Si estoy conectado a una máquina Linux remota a través de ssh, usando bash o zsh en la máquina remota (he cambiado mi shell predeterminado en algunos pero no todos nuestros servidores), no parece suceder.

Además, descubrí que cuando abro una nueva ventana del Terminal, no parece estar en modo vi ni en modo emacs. Se comporta de una manera vagamente parecida a emacs, pero control+A no salta al principio de la línea, y el pequeño grupo de otros atajos específicos de emacs con los que estoy familiarizado tampoco funcionan. Si ejecuto set -o emacs, entonces esas cosas comienzan a funcionar.

Si ejecuto set -o | egrep "on$" (que lista las opciones de zsh actualmente habilitadas) en un terminal nuevo, ni emacs ni vi aparecen en los resultados.

Revisé mi historial de actualizaciones/instalaciones en la App Store, y creo que esto pudo haber comenzado cuando instalé Xcode. (Principalmente desarrollo cosas en Java, y no lo tenía instalado previamente, aunque tenía las herramientas de desarrollo instaladas). No parece coincidir con la instalación de ninguna actualización de software a nivel de sistema.

Hice algunas búsquedas y no encontré evidencia de que alguien más haya tenido este problema.

Si importa, estoy usando:

  • iMac 27" finales de 2013.
  • 32 GB, 1 TB SSD, 3.5 a 3.9 GHz i7.
  • macOS High Sierra 10.13.4.
  • zsh 5.3 (x86_64-apple-darwin17.0).
  • Xcode 9.3.1 (instalado, pero no lo estoy usando cuando ocurre esto).

Entonces, mis preguntas:

  1. ¿Alguien sabe qué podría estar haciendo para provocar el cambio silencioso al modo vi?
  2. ¿Hay alguna configuración que pueda cambiar para evitar que esto siga ocurriendo?
  3. ¿Hay algún registro u otra salida de diagnóstico que pueda habilitar para que sea más obvio cuando esto suceda?
  4. ¿Cómo se llama este modo de entrada no-emacs, no-vi que veo en una ventana del Terminal/zsh fresca?

0 votos

Mirando hacia atrás en esto después de> 2 años, no tengo idea de por qué no lo publiqué en unix.stackexchange ... : facepalm:

7voto

JakeRobb Puntos 1

Ay. Al explorar más mi propia situación, creo que estaba presionando escape. ¡Creo que zsh estaba en modo vi todo el tiempo, pero más específicamente, estaba en modo de inserción de vi! Si voy a un editor completamente nuevo y presiono escape, me encuentro en el modo de comando de vi.

Si ese es el caso, todavía estoy interesado en saber por qué set -o | egrep "on$" no indica que estamos en modo vi.

EDICIÓN: doble suspiro. Originalmente escribí mi pregunta con todas las referencias a bash, habiendo olvidado por completo que hace años cambié mi shell predeterminado a zsh, que es en su mayoría lo mismo. Volví y edité la pregunta para que fuera más clara, y luego volví a buscar en Google, reemplazando bash por zsh. Rápidamente encontré esto: https://unix.stackexchange.com/questions/197839/why-does-exporting-vim-as-editor-in-zsh-disable-keyboard-shortcuts

He aquí que mi .profile tiene EDITOR=vi, que puse allí hace unas dos semanas. Eliminé esa línea, y presionar escape ya no me coloca en el modo de comando de vi.

Aún mejor, seguí las instrucciones dadas en esa respuesta y pude restaurar mi configuración de EDITOR sin estropear zsh. ¡Hurra! :)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X