0 votos

¿Cómo se desactiva el comportamiento tipo VI en el terminal de MacOS?

Cuando abro un terminal y escribo

asdf asdf asdf asdf

Y golpea control-u la línea se borra. Si vuelvo a escribir esa línea, pero luego uso option-left para saltar una palabra hacia atrás, y luego control-u no limpia la línea en absoluto.

Para empezar, tenía problemas con option-right sin saltarse las palabras hacia adelante. Así que pensé que lo había arreglado con estos ajustes del terminal. Pero sinceramente no tengo ni idea de lo que hacen estos códigos ascii, y en qué estado se queda mi terminal.

¿Existen códigos ascii que saltan palabras hacia delante y hacia atrás sin romper el terminal? ¿Qué son?

mac terminal keyboard settings

FYI Mirando a set -o Veo que el modo VI está desactivado.

macbookpro% set -o | grep ' on'
combiningchars        on
interactive           on
login                 on
shinstdin             on

1voto

ubershmekel Puntos 133

He encontrado muchas pistas aquí: https://coderwall.com/p/a8uxma/zsh-iterm2-osx-shortcuts

Esto es lo que pongo en mi .zshrc para arreglar las cosas.

bindkey "\033f" forward-word
bindkey "\033b" backward-word
bindkey "\033[H" beginning-of-line
bindkey "\033[F" end-of-line

Junto a estos ajustes del teclado del terminal:

MacOS default terminal keyboard settings

Por alguna razón, el modificador de la tecla de control (^) se puede establecer, pero no activa los códigos en el terminal. Así que sólo estoy usando la opción y el cambio.

Encontré una solución similar aquí que menciona que puedes ver los códigos de las llaves ejecutando cat . https://stackoverflow.com/questions/12382499/looking-for-altleftarrowkey-solution-in-zsh

Al principio utilizaba los códigos de las llaves que quería. Eso fue un error, porque aunque funcionaron en mi mac local, no funcionaron cuando me conecté por SSH a una máquina linux. Usando less /etc/inputrc en el bash remoto encontré estos accesos directos existentes:

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

Además, mi bash local tenía una configuración diferente. Para averiguarlo utilicé

bash-3.2$ bind -p | grep of-line
"\C-a": beginning-of-line
"\eOH": beginning-of-line
"\e[H": beginning-of-line
"\C-e": end-of-line
"\eOF": end-of-line
"\e[F": end-of-line

Lo que me hizo decantarme por la configuración del teclado de la terminal que ves arriba. Porque funcionaban en las 3 configuraciones (zsh local, bash local, bash remoto).

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