Grâce à votre question, j'ai enfin lu et augmenté ma compréhension, bravo !
Donc, une très bonne source d'information est man readline
. Les raccourcis clavier spécifiés dans les différents inputrc
Les fichiers contrôlent le fonctionnement de la bibliothèque BASH readline. Selon la page de manuel readline, vous pouvez utiliser des noms de clé symboliques ou des séquences d'échappement :
Key Bindings
The syntax for controlling key bindings in the inputrc file is
simple. All that is required is the name of the command or
the text of a macro and a key sequence to which it should be
bound. The name may be specified in one of two ways: as a sym‐
bolic key name, possibly with Meta- or Control- prefixes, or
as a key sequence. The name and key sequence are separated by
a colon. There can be no whitespace between the name and the
colon.
When using the form keyname:function-name or macro, keyname is
the name of a key spelled out in English. For example:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
La page de manuel indique également que le fichier de configuration par défaut est ~/.inputrc
Je vous recommande donc d'y placer vos fixations.
Si vous souhaitez utiliser des touches alphabétiques normales (par exemple Control -g ), Control-g: forward-word
fonctionne bien. Les touches fléchées sont plus difficiles. J'ai essayé, sans succès, de trouver la clé name pour les touches fléchées. Aucun de ceux que j'ai essayés (left-arrow
, left
, :left
) a fonctionné, il semble donc que nous soyons coincés avec les séquences d'échappement.
Malheureusement, la séquence d'échappement exacte diffère entre les émulateurs de terminaux (c'est pourquoi votre inputrc Ubuntu avait plusieurs lignes). Pour savoir quelle séquence d'échappement votre terminal préféré utilise, exécutez read
puis tapez la séquence de touches qui vous intéresse. Dans terminator
, xterm
et gnome-terminal
, Contrôle -Gauche donner :
$ read
^[[1;5D
en aterm
:
$ read
^[Od <-- that is a capital O not a zero (0).
En expérimentant un peu, j'ai compris que ^[[D
est gauche et ^[[1;5D
est Contrôle -Gauche . Le premier ^[
est le Echap clé, utilisée ici, je suppose, pour désigner une séquence d'échappement .
Dans tous les cas, pour lier Control -Gauche à forward-word
d'une manière qui fonctionne pour tous, j'ai ajouté ces lignes à mon ~/inputrc
:
"\e[1;5D": backward-word
"\eOd": backward-word
Pour des raisons que je n'ai pas entièrement comprises, Contrôle est représenté par \e
qui devrait être Échap .
Mon dernier ~/.inputrc
fichier qui fonctionne pour tous les terminaux listés ci-dessus est :
"\e[1;5D": backward-word
"\eOd": backward-word
"\e[1;5C": forward-word
"\eOc": forward-word