90 votes

Appuyez sur CTRL pour déplacer le curseur entre les mots/chaînes.

J'ai l'habitude d'utiliser le CTRL pour aller plus vite lorsque vous utilisez les touches fléchées gauche et droite (va à la fin d'un mot, au lieu d'un caractère à la fois).

Puis-je faire cela en bash d'une manière ou d'une autre ?

Je pourrais probablement le coder, mais je me demandais s'il y avait quelque chose de plus facile / déjà fait.

102voto

Thomas Points 63635

Avec les liaisons de touches par défaut de la ligne de lecture, ALT + B revient en arrière d'un mot, ALT + F avance d'un mot.

La configuration par défaut d'Ubuntu fournit en outre CTRL +flèches comme vous en avez l'habitude. Elles sont en /etc/inputrc et spécifié comme suit :

# 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

Je ne sais pas pourquoi nous avons besoin de trois d'entre eux...

0 votes

Il est intéressant de noter que les liaisons que vous avez spécifiées ne correspondent pas à celles que j'ai déterminées et mentionnées dans ma réponse. Je me demande à quoi est dû cet écart. De plus, je suis curieux de savoir comment vous pouvez déterminer ce qu'est une séquence de caractères en regardant /etc/inputrc. (par exemple, comment puis-je savoir ce que signifie 1;5C ci-dessus ?)

20 votes

@bryan_ruiz : Les différents claviers (émulateurs de terminal, etc.) affichent des séquences différentes. Pour voir la séquence, appuyez sur Ctrl-v puis sur la touche. Pour moi, dans PuTTY, Ctrl-v Ctrl-Flèche droite me donne ^[OC qui est le même que le vôtre. Sur xterm Je reçois ^[[1;5 qui est le même que celui de Thomas.

0 votes

Puis-je savoir pourquoi vous avez donné 3 paires ? Je pensais qu'une seule suffirait ?

42voto

bryan_ruiz Points 717

Comme Thomas l'a expliqué, vous pouvez ajouter les liaisons à /etc/inputrc .

Une autre alternative pour qu'il se charge à chaque fois que vous vous connectez, est de les mettre dans ~/.bashrc comme ça :

#use ctl keys to move forward and back in words
bind '"\eOC":forward-word'
bind '"\eOD":backward-word'

J'ai appris que vous pouvez utiliser cat > /dev/null pour regarder les caractères que votre clavier envoie, par exemple, CTRL + flèche droite montre :

^[OC

^[ est la même chose que \e donc c'est de là que vient le code dans la section bind commandement.

Vous pouvez également rechercher des liaisons comme ceci :

bind -p | grep forward-word

Tout cela est sacrément génial et je suis heureux d'avoir découvert d'autres pouvoirs de Bash.

7 votes

I pensez à cela n'affectera que bash, alors que l'option inputrc s'appliquera également aux autres programmes qui utilisent readline, par exemple l'interpréteur Python, la plupart des autres shells. Notez que vous pouvez aussi mettre les commandes dans ~/.inputrc si vous n'avez pas Root, ou si vous ne voulez pas qu'ils s'appliquent à tous les utilisateurs.

0 votes

Pour une raison quelconque, cela n'a fonctionné pour moi que lorsque j'ai interverti l'ordre de vos lignes ci-dessus. Note supplémentaire. J'utilise Ubuntu 14.04LTS derrière putty depuis Windows 8.1.

2 votes

+1 spécialement pour I learned that you can use cat > /dev/null to look at the characters that your keyboard is sending . #TIL

5voto

Un .inputrc dans votre répertoire personnel fera que ctrl+gauche ne fonctionnera plus sous Ubuntu (par exemple).

Pour que tout fonctionne, ajoutez ce qui suit à ~/.inputrc :

# Include system-wide inputrc, which is ignored by default when
# a user has their own .inputrc file.
$include /etc/inputrc

crédit à f.kowal

1voto

pablohe Points 11

Ajouter $include /etc/inputrc

sur ~/.inputrc

Fonctionne pour CentOS Linux version 8.2.2004 (Core)

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