0 votos

¿Cómo decirle a iterm2 que use el modo emacs y no el modo vi?

Recientemente cambié de Hyper terminal (que ya no se mantiene) a iterm2.

Me sorprende que iterm2 parezca estar usando el modo vi: en lugar de ir al principio y final de la línea cuando presiono ctrl+a/ctrl+e emite literales ^A y ^E.

No recuerdo haber configurado el modo vi a propósito. La interfaz de configuración de iterm2 me abruma.

He probado ejecutar zsh en modo fábrica (zsh -f), e incluso ahí iterm2 utiliza el modo vi.

En cambio, cuando uso Hyper o el terminal integrado, zsh está en el modo predeterminado readline. ¿Cómo puedo solucionar esto? He revisado la documentación y el rastreador de problemas de iterm2 y no he encontrado nada.

Curiosamente, cuando ejecuto zsh -f en el Terminal integrado, sí está en modo vi.

Pregunta similar en superuser, que ha estado abierta durante 10 años sin respuesta: https://superuser.com/questions/840134/unintentional-vi-mode-in-iterm-on-mac

3voto

Marc Wilson Puntos 146

No tiene nada que ver con Terminal vs iTerm y todo tiene que ver con cómo está configurada la shell que se ejecuta dentro de ellos. El emulador de terminal no proporciona el editor de líneas, lo hace la shell.

Según la documentación de zsh:

Si una de las variables de entorno VISUAL o EDITOR contiene la cadena 'vi' cuando la shell se inicia, entonces será 'viins', de lo contrario será 'emacs'. Las opciones -e y -v de bindkey proporcionan una manera conveniente de anular esta elección predeterminada.

En cuanto a las diferencias de comportamiento, revisa qué combinación de tus archivos de inicio de shell está siendo leída por la shell cuando se inicia desde el emulador de terminal. Es probable que uno de ellos esté cargando la shell como una shell de inicio de sesión, mientras que otro no lo está.

Además, la frase "modo readline" no tiene sentido. Pon bash en modo vi y aún así está usando readline como editor de líneas.

1voto

Cornelius Roemer Puntos 111

Todavía no sé por qué iterm2 se comporta de manera diferente a Terminal y Hyper, pero aquí hay una solución:

Anexa bindkey -e en una nueva línea a tu ~/.zshrc.

Esto le indica explícitamente a zsh que use los keybindings de emacs/readline.

Sí establezco export EDITOR=vim en mi ~/.zshrc, por lo que podría ser por eso que zsh piensa que quiero usar vi bindings en la línea de comandos. Aún es muy extraño que el comportamiento sea diferente entre iterm2 y Terminal.

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