0 votes

Comment désactiver le comportement de type VI dans le terminal MacOS ?

Lorsque j'ouvre un terminal et que je tape

asdf asdf asdf asdf

Et frappe control-u la ligne est effacée. Si je tape à nouveau cette ligne, mais que j'utilise ensuite la fonction option-left pour sauter un mot en arrière, puis control-u n'efface pas du tout la ligne.

Pour commencer, j'avais des problèmes avec option-right ne pas sauter de mots en avant. Je pensais donc avoir réglé le problème avec ces paramètres de terminal. Mais honnêtement, je n'ai aucune idée de ce que font ces codes ascii, et dans quel état se trouve mon terminal.

Les codes ascii qui permettent de sauter des mots en avant et en arrière sans casser le terminal existent-ils ? Quels sont ces codes ?

mac terminal keyboard settings

Pour info, je regarde set -o Je vois que le mode VI est désactivé.

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

1voto

ubershmekel Points 303

J'ai trouvé beaucoup d'indices ici : https://coderwall.com/p/a8uxma/zsh-iterm2-osx-shortcuts

C'est ce que j'ai mis dans mon .zshrc pour réparer les choses.

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

En plus de ces paramètres du clavier du terminal :

MacOS default terminal keyboard settings

Pour une raison quelconque, le modificateur de la touche de contrôle (^) peut être défini, mais n'active pas les codes dans le terminal. Je n'utilise donc que les touches Option et Shift.

J'ai trouvé une solution similaire ici qui mentionne que vous pouvez voir les codes de clé en exécutant cat . https://stackoverflow.com/questions/12382499/looking-for-altleftarrowkey-solution-in-zsh

Au départ, j'utilisais les codes de clé que je voulais. C'était une erreur, car même s'ils fonctionnaient sur mon mac local, ils ne fonctionnaient pas lorsque je me connectais en SSH à une machine linux. Utilisation de less /etc/inputrc sur le bash distant, j'ai trouvé ces raccourcis existants :

# 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

Aussi, mon bash local avait des paramètres différents. Pour les découvrir, j'ai utilisé

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

J'ai donc opté pour les paramètres du clavier du terminal que vous voyez en haut. Parce qu'ils fonctionnaient dans les 3 configurations (zsh local, bash local, bash distant).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X