web-dev-qa-db-fra.com

Recherche d'une solution ALT + LeftArrowKey dans zsh

Je suis récemment passé de bash à zsh, mais je manque mon Alt+LeftArrowKey et Alt+RightArrowKey pour aller et venir une Parole à la fois.

En ce moment, si j'appuie sur Alt+LeftArrowKey Je remonte quelques lettres et puis je suis coincé. Je n'irai pas plus loin en arrière et ça ne reviendra pas à la fin 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. Impossible de saisir de nouveaux caractères sur la ligne ou de supprimer.

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

Je suis sur Mac OS X en utilisant Terminal si c'est important.

93
Mads Ohm Larsen

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

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

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

Question connexe: Correction des paramètres clés (Accueil/Fin/Insérer/Supprimer) dans .zshrc lors de l'exécution de Zsh dans Terminator Terminal Emulator

187
lolesque

Pour toute personne utilisant iTerm, indépendamment de Shell

À mon avis, toutes les solutions proposées ici ont une approche à rebours. Vous dites essentiellement à votre shell d'écouter une séquence esc ou une autre liaison de clé que vous avez définie dans votre terminal, créant des problèmes de compatibilité lorsque vous changez de shell (si vous SSH dans un autre shell, passez de BASH à ZSH, etc. et vous perdez certains sinon tous vos raccourcis clavier).

La plupart des shells ont un ensemble de séquences par défaut qui sont pré-liées. De plus, bien qu'ils ne soient pas 100% cohérents, ils sont assez 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 compressive pour obtenir que votre terminal réponde au plus près des raccourcis clavier natifs ici

Ouvrez les préférences iTerm +, et accédez à l'onglet Profiles (l'onglet Keys peut être utilisé, mais l'ajout de raccourcis clavier à votre profil vous permet de enregistrer votre profil et de le synchroniser avec plusieurs ordinateurs) et le sous-onglet keys et entrez les informations suivantes:

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 à un serveur exécutant BASH, irb/pry, node, etc.

139
Travis

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
64
Rob Sawyer

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

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

Une autre solution ne marche pas

8
Vetalll

Bien que ne répondant pas strictement à votre question, la liaison par défaut pour forward-Word et backward-Word sont alt-f resp. alt-b.

Cela fonctionne partout, ne vous oblige pas à quitter la ligne de départ et possède une propriété mnémonique Nice (f = avant, b = arrière), tout en étant cohérent avec ctrl-f et ctrl-b étant forward-character et backward-character.

Déchirez vos touches fléchées!

5
0x89

Sur Mavericks (10.9.4), le code est 1; 5 ... donc pour lier alt avec des flèches, j'ai mon .zshrc en utilisant ceci:

bindkey "^[[1;5C" forward-Word
bindkey "^[[1;5D" backward-Word

Vous pouvez utiliser CTRL + V puis la commande que vous souhaitez utiliser

à Yosemite, utilisez la solution de Rob

1
ZeoS

Pour que cela fonctionne pour moi, j'ai utilisé cette réponse , mais j'ai dû échanger les codes (gauche <-> droite)

⌥ + ← Envoyer des codes hexadécimaux: 0x1b 0x66
⌥ + → Envoyer les codes hexadécimaux: 0x1b 0x62

et ajoutez ce qui suit à mon ~/.zshrc

bindkey -e
bindkey "^[b" forward-Word
bindkey '^[f' backward-Word
0
iRonin

Dans zsh, vous pouvez utiliser la commande bindkey pour voir les raccourcis clavier.

Utilisez bindkey pour explorer les options disponibles sans raccourcis clavier personnalisés.

À savoir ^[b pour reculer d'un mot et ^[f pour avancer un mot.

0
MCI