Vous recherchez une solution alt + LeftArrowKey dans zsh
Je viens récemment passé de bash pour zsh, cependant je m'ennuie de mon Alt+LeftArrowKey et Alt+RightArrowKey pour aller et venir d'un mot à la fois.
Maintenant, si j'appuie sur Alt+LeftArrowKey je reviens d'un couple de lettres et puis, je suis coincé. Je n'irai pas plus loin en arrière et il 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 d'entrer de nouveaux caractères sur la ligne ni de supprimer.
Comment puis-je récupérer mon raccourci bien-aimé?
Je suis sur Mac OS X en utilisant le Terminal si c'est important.
6 réponses
Exécutez cat
puis appuyez sur les touches pour voir les codes envoyés par votre raccourci.
(Appuyez sur la touche Ctrl+C pour tuer le cat
lorsque vous avez terminé.)
Pour moi, (ubuntu, konsole, xterm) en appuyant sur Alt+← envoie ^[[1;3D
, donc j'en ai mis dans 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 mot par mot, comme dans une zone de texte normale sous Windows ou linux gui.)
Question connexe: correction des paramètres clés (Home / End / Insert / Delete) dans .zshrc lors de L'exécution de Zsh dans Terminator Terminal Emulator
pour toute personne utilisant iTerm, quel que soit le shell
Toutes les solutions proposées ici adoptent une approche à rebours à mon avis. 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é. De plus, bien qu'ils ne soient pas cohérents à 100%, ils sont assez proches. Donc, le moyen le plus simple que j'ai trouvé pour créer keybinding 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 que votre terminal réponde au plus près des raccourcis clavier Mac 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 {[16] } et de le synchroniser sur plusieurs ordinateurs) et keys
sous-onglet et entrez ce qui suit:
Déplacer le curseur d'un mot à gauche
⌥+← Envoyer Des Codes Hex:
0x1b 0x62
Déplacer le curseur d'un mot à droite
⌥+→ Envoyer Des Codes Hex:
0x1b 0x66
Et cela devrait vous donner le comportement souhaité non seulement dans ZSH, mais aussi si vous SSH dans un serveur exécutant BASH, irb/pry, node etc.
Ajouter ce qui suit à ~/.zshrc a travaillé pour moi sur OSX Mountain Lion.
bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word
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 d'origine, et a une belle propriété mnémonique (F = forward, b=back), tout en étant cohérent avec ctrl-f
et ctrl-b
étant forward-character
et backward-character
.
Arrachez vos touches fléchées!
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
Dans Yosemite, utilisez la solution de Rob
Pour le faire fonctionner pour moi j'ai utilisé cette réponse, mais j'ai dû intervertir les codes (à gauche droite)
⌥ + ← Envoyer des Codes hexadécimaux: 0x1b 0x66
⌥ + → Envoyer des Codes hexadécimaux: 0x1b 0x62
Et ajouter ce qui suit à mon ~/.zshrc
bindkey -e
bindkey "^[b" forward-word
bindkey '^[f' backward-word