J'utilise Ctrl- ←et Ctrl- →sur tous les systèmes Linux sur lesquels je travaille, mais ces combinaisons de touches ne fonctionnent pas en bash sur mon Macbook Pro. Il exécute Snow Leopard et j'utilise l'application Terminal intégrée.
Les combinaisons de touches ne semblent pas être capturées par quoi que ce soit avant ou par Terminal, car si je passe à l'un de mes serveurs Linux, je peux utiliser Ctrl- ←/ →pour passer au mot suivant / précédent sur la ligne de commande. Cependant, lorsque j'essaie cette combinaison de touches en bash sur mon Macbook, j'obtiens simplement "C" pour la flèche droite et "D" pour la flèche gauche.
Avez-vous des idées sur la façon de faire fonctionner ces clés dans Darwin Bash?
Réponses:
OS X utilise la clé emacs liant ma valeur par défaut. C'est vrai, c'est pratiquement toutes les applications sur OS X, c'est plutôt sympa. Cela signifie que des choses comme Ca et Ce sont en début / fin de ligne. Vous obtenez également le nifty backward-word-kill avec M-backspace, oh, et kill-line avec Ck.
Cela devrait signifier que dans votre terminal, les mots avant / arrière sont liés respectivement à Mf et Mb (M = Meta = alt / option), mais ce n'est pas le cas. Sous OS X, les mots avant / arrière sont liés à M- → et M- ← par défaut.
Vous pouvez modifier ce comportement en modifiant la configuration de la bibliothèque GNU Readline pour votre compte. Cela a lieu dans votre
~/.inputrc
dossier. Vous pouvez obtenir une grande liste de commandes pouvant être liées avecman readline
ainsi que dans la documentation en ligne comme celle-ci ici. .Donc, pour répondre à votre question, vous voulez remapper ce que fait Readline quand il voit C- → et C- ← pour faire ce qu'il fait sur votre serveur Linux.
La syntaxe d'un
~/.inputrc
fichier est assez simple pour ce que vous voulez faire:key-sequence: action
.Cela devrait être ce dont vous avez besoin pour obtenir le comportement souhaité:
Voici une autre page avec des liaisons utiles supplémentaires.
(Vous pourriez probablement vous en sortir en copiant / etc / inputrc de votre box linux vers votre OS X ~ / .inputrc)
la source
\e[1;5C
et\e[1;5D
pour déclencherforward-word
etbackward-word
.mettre dans
~/.inputrc
les lignes suivantes:la source
Ces jours-ci, il semble que les séquences d'échappement émises par Ctrl-Flèches dans le terminal ont changé. Voici ce qui fonctionne pour moi à partir d'aujourd'hui (fin 2018):
"\e[1;5C": forward-word "\e[1;5D": backward-word
Remarque: vous pouvez toujours déterminer les séquences d'échappement réelles en tapant
cat -v
dans le terminal et en appuyant sur Ctrl-Flèche gauche ou Ctrl-Flèche droite. Voici un exemple de sortie pour ma propre flèche Ctrl-Gauche:^[[1;5C ^[[1;5C
Pour traduire en
.inputrc
jargon, remplacez le signe d'échappement^[
par\e
et collez le résultat à l'intérieur des guillemets doubles.la source
Comme @ bhh1988 l'a mentionné, la configuration de Mission Control empêche les touches Ctrl de fonctionner avec les touches fléchées de
bash
. Je ne voulais pas interférer avec ces raccourcis, donc j'utilise plutôt la touche Option (c'est-à-dire Alt). Actuellement sur Mojave en utilisant un clavier allemand (je ne sais pas si c'est pertinent), je mets ce qui suit.inputrc
pour utiliser Option-flèche gauche et Option-flèche droite pour se déplacer entre les mots.la source
MISE À JOUR Jan 2020
Sur les dernières versions d'OSX, le shell par défaut est
zsh
. Par conséquent, l'incantation magique pour que ctrl-arrowleft et ctrl-arrowright fonctionnent comme prévu est la suivante:(mettez-le dans votre
.zshrc
)la source