265 votes

Recherche d'une solution ALT+Touche fléchée gauche dans zsh

Je suis récemment passé de bash à zsh, mais mes fonctions de base me manquent. Alt + LeftArrowKey y Alt + RightArrowKey d'aller et venir un mot à la fois.

Pour l'instant, si j'appuie sur Alt + LeftArrowKey Je reviens en arrière de quelques lettres et puis je suis coincé. Je ne peux pas aller plus loin en arrière et il ne revient pas en arrière jusqu'au bout de la ligne avec Alt + RightArrowKey comme je m'y attendais. Je ne peux même pas utiliser les touches fléchées pour aller à la fin de la ligne, seulement à l'avant-dernière. Je ne peux pas non plus saisir de nouveaux caractères sur la ligne, ni même les effacer.

Comment puis-je récupérer mon raccourci bien-aimé ?

Je suis sur Mac OS X et j'utilise Terminal si c'est important.

469voto

lolesque Points 1153

Exécuter cat puis appuyez sur les touches pour voir les codes que votre raccourci envoie.
(Presse Ctrl + C pour tuer le cat lorsque vous avez terminé).
Pour moi, (ubuntu, konsole, xterm) appuyer sur Alt + envoie ^[[1;3D donc je mettrais dans mon .zshrc

bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word

(En fait, je préfère utiliser Ctrl + flèche pour se déplacer mot par mot, comme dans une zone de texte normale sous Windows ou linux gui).

Question connexe : Correction des paramètres des clés (Home/End/Insert/Delete) dans .zshrc lors de l'exécution de Zsh dans l'émulateur de terminal Terminator

331voto

Travis Points 5836

Pour toute personne utilisant iTerm, quel que soit le shell

Toutes les solutions proposées ici adoptent, à mon avis, une approche à rebours. Vous dites essentiellement à votre shell d'écouter une séquence esc ou une autre combinaison de touches que vous avez définie dans votre terminal, ce qui crée des problèmes de compatibilité lorsque vous changez de shell (si vous vous connectez en SSH à un autre shell, si vous passez de BASH à ZSH, etc. et que vous perdez une partie, voire la totalité, de vos combinaisons de touches).

La plupart des shells ont un ensemble de séquences par défaut qui sont fournies pré-liées. De plus, bien qu'elles ne soient pas cohérentes à 100%, elles sont suffisamment proches. Ainsi, le moyen le plus simple que j'ai trouvé pour créer des raccourcis clavier pour une action particulière dans le shell est de dire à votre application de terminal de se lier aux raccourcis clavier par défaut qui sont cohérents entre les shells.

J'ai écrit une solution comprimée pour que votre terminal réponde le plus possible aux raccourcis clavier natifs de Mac. aquí

Ouvrez les préférences de l'iTerm + , et naviguez jusqu'au Profiles (l'onglet Keys peut être utilisé, mais l'ajout d'un raccourci clavier à votre profil vous permet de sauvegarder votre profil et le synchroniser sur plusieurs ordinateurs) et keys et entrez ce qui suit :

Déplacer le curseur d'un mot vers la gauche

+ Envoyer des codes hexadécimaux : 0x1b 0x62

Déplacer le curseur d'un mot vers la droite

+ Envoyer des codes hexadécimaux : 0x1b 0x66

Et cela devrait vous donner le comportement souhaité non seulement dans ZSH, mais aussi si vous vous connectez en SSH à un serveur exécutant BASH, irb/pry, node, etc.

93voto

Rob Sawyer Points 505

L'ajout de ce qui suit à ~/.zshrc a fonctionné pour moi sur OSX Mountain Lion.

bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word

55voto

Vetalll Points 586

Sur MacOS High Siera 10.13.6 ou Mojave 10.14.2 et en utilisant iTerm2 avec ZSH Pour passer des mots, je dois faire comme ceci :

bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word

Une autre solution ne fonctionne pas pour moi

50voto

mcvkr Points 816

Pour iTerm, allez à l'endroit où se trouve cette capture d'écran et sélectionnez "Natural Text Editing".

enter image description here

si vous aviez déjà des mappages de touches, il vous sera demandé ci-dessous, sélectionnez en conséquence pour ne pas perdre les liaisons spéciales que vous avez définies auparavant. Cependant, si vous ne vous souvenez pas d'avoir ajouté des liaisons ou si vous venez de commencer à utiliser iTerm (sur cette machine), vous pouvez choisir "Supprimer".

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X