Quelle est la séquence d'échappement ANSI gnome-terminal pour «CTRL + flèche / s»?


10

Je suis en train de configurer mon bash ~/.inputrcà ces paramètres
(Remarque: , signifie les touches fléchées gauche et droite)

  • Ctrl+ - devrait reculer d'un mot
  • Ctrl+ - devrait sauter un mot

Actuellement, j'ai ceci dans mon ~/.inputrcet cela ne fonctionne pas. Ctrl + arrowne produit rien.

"\eC-5C":forward-word
"\eC-5D":backward-word

Je suis sûr que ma séquence d'échappement est incorrecte.
Quelles sont les séquences d'échappement correctes pour les Ctrl + arrowcombinaisons?

  • terminal: tmux dans gnome-terminal

Réponses:


14

Gnome-terminal (plus précisément VTE ) imite une version des séquences d'échappement de xterm. La précision de cette opération dépend de la version de VTE.

La documentation xterm correspondante se trouve dans la section Touches de fonction de style PC des séquences de contrôle XTerm .

Ce que vous recherchez est une chaîne comme \e[1;5D(pour le contrôle de la flèche gauche), où le 5dénote le controlmodificateur.

En ncurses, vous pouvez voir ces chaînes en utilisant infocmp -x, comme les valeurs kUP5, kDN5, kLFT5et kRIT5. Par exemple:

    kDN5=\E[1;5B,
    kLFT5=\E[1;5D,
    kRIT5=\E[1;5C,        
    kUP5=\E[1;5A,

merci pour la réponse et le lien vers les ressources. Cela a résolu le problème pour moi!
the_velour_fog

16

Le moyen le plus simple de trouver les codes d'une séquence de touches est d'utiliser ctrl- v.

Donc, vous tapez ctrl Vet ctrl pour obtenir:

^[[1;5C

C'est une façon d'écrire ESC[1;5Cou \e[1;5C.


Wow cool. savez-vous si c'est une fonctionnalité prévue de gnome-terminal, ou est-ce quelque chose qui a été découvert par accident?
the_velour_fog

Les deux zsh ( bindkey|grep 'quoted-insert') et bash ( bind -p|grep 'quoted-insert') ont une liaison de clé pour sortir les codes clés définis sur <c-v>.
kba se tient avec Monica le

1
Pour ce que ça vaut, Ctrl-V remplit la même fonction dans les modes d'insertion et de commande de Vim.
joeytwiddle

4
@the_velour_fog Ctrl + V signifiant "insérer le caractère suivant au lieu de l'interpréter comme une commande de terminal" remonte aux premiers jours d'Unix. C'est une caractéristique du traitement en ligne de commande du noyau qui a été imitée par des systèmes d'entrée plus sophistiqués tels que bash, zsh, vi, ...
Gilles 'SO- arrête d'être méchant'

1
@kba Pour mémoire, ils ne sont pas les seuls. Bash est en fait fourni par la bibliothèque GNU Readline dont il dépend, qui le lie également <c-q>pour correspondre au raccourci clavier Emacs qu'il copie. Zsh le lie également aux deux <c-v>et <c-q>seulement si vous activez le mode Vim, assez ironiquement. Readline est également utilisé par d'autres choses comme l' import rlcompleteramélioration de Python . (Sources: tiswww.case.edu/php/chet/readline/readline.html#SEC9 et man zshzle)
ssokolow
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.