Comprendre les caractères de contrôle dans .inputrc

22

Mon compte Linux sur une machine distante est livré avec les éléments prédéfinis suivants .inputrc

"\e[1~": beginning-of-line
"\e[4~": end-of-line
\e[5~”: history-search-backward
\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

set completion-ignore-case on
set bell-style visible
set expand-tilde on
set convert-meta off
set input-meta on
set output-meta on
set show-all-if-ambiguous on
set visible-stats on

Je lis la documentation de GNU bash sur le sujet , mais je ne l' ai pas été en mesure de trouver une section expliquant ce que les séquences de caractères \e[1~, \e[5C, \e\e[D, etc. signifient.

Je crois avoir lu quelque part que les \emoyens les meta character(qui je pense est Altdans mon clavier), mais ne comprennent pas ce que les autres caractères de contrôle [, ~, 5Detc. moyenne.

Quelqu'un connaît une bonne référence sur le sujet?

Amelio Vazquez-Reina
la source

Réponses:

21

Il s'agit de séquences d'échappement de code de contrôle ANSI qui sont transmises lorsque diverses touches non alphanumériques sont enfoncées sur un clavier "terminal".

\ e signifie le caractère ASCII "ESCAPE" (octal 033 hex 1B décimal 27). Qui fait partie d'une introduction de séquence de commandes (CSI).

Escape [ 2 ~est une séquence de caractères transmise lorsque vous appuyez sur la touche intitulée "Insérer" sur un terminal VT220 (ou version ultérieure) .

Beaucoup de ces conventions ont été adoptées dans des logiciels tels que les consoles / shells xterm et Linux - souvent étendus de diverses manières, parfois incompatibles.

L'utilisation de ces séquences dans la fonction READLINE de bash est décrite dans les pages de manuel de readline

       Dans le second formulaire, "keyseq": nom de fonction ou macro, keyseq diffère
       du nom de clé ci-dessus en ce que les chaînes indiquant une séquence de touches entière peuvent
       être spécifié en plaçant la séquence entre guillemets. Certains GNU
       Les échappements de touches de style Emacs peuvent être utilisés, comme dans l'exemple suivant, mais
       les noms des caractères symboliques ne sont pas reconnus.

          "\ Cu": argument-universel
          "\ Cx \ Cr": re-read-init-file
          "\ e [11 ~": "Touche de fonction 1"

Pour obtenir une liste des séquences d'échappement correspondant à quelles touches du clavier, vous pouvez utiliser une commande telle que infocmp -L -1ouinfocmp -L -1 xterm

RedGrittyBrick
la source
Excellent!! C'est exactement ce que je cherchais. Merci @RedGrittyBrick!
Amelio Vazquez-Reina
+1. je cherchaisCtrl code dans inputrc-> ENTER= Ctrl+ n.
rendon
@ user1133275: lien mis à jour mais la commande man 3 readline sur votre propre système devrait vous donner les mêmes informations. La commande man 3 readlinefonctionne également en WSL sur WIndows 10 . SI nécessaire, vous pouvez poser une nouvelle question sur les parties spécifiques de la bind -Psortie qui vous posent des problèmes.
RedGrittyBrick