Comment lier <Control> <Arrowkey> dans Mutt?

9

Je suis coincé ici:

Est-il possible de lier un <enter>, <backspace>, <up>, <down>, <left>, <right>ensemble avec le contrôle?

\C<foo>apparaît comme |foo>dans l'aide et ^<up>n'est pas lié.
'\C<foo>, '\C <foo>'ne fonctionne pas aussi (même chose à la "place).

<control> n'existe pas.

En fait , vous pouvez obtenir ^<foo>à apparaître dans l'aide, mais seulement si vous la carte ^<foo>, ce qui est exactement ce que je veux. ;)

Profpatsch
la source

Réponses:

5

Tout d'abord, vous devez déterminer si votre terminal envoie des séquences d'échappement différentes pour ces combinaisons de touches. Les applications exécutées dans les terminaux obtiennent des caractères en entrée, pas des clés. Les touches de fonction sont codées sous forme de caractères de contrôle ou de séquences d'échappement commençant par le caractère d'échappement (que vous pouvez écrire comme \edans une liaison de touches).

Pour voir la séquence d'échappement envoyée par une combinaison de touches dans un terminal, appuyez sur Ctrl+ Và l'invite du shell, puis appuyez sur la combinaison de touches. Par exemple, si j'appuie sur Ctrl+ V Ctrl+ Leftà l'invite du shell, je vois ^[O5D. ^[est le caractère d'échappement, donc j'aurais besoin de lier \eO5Ddans Mutt pour le faire réagir à Ctrl+ Left:

bind editor \eO5D backward-word

Certains terminaux envoient la même séquence d'échappement pour la même clé avec différents modificateurs. Si tel est le cas, vous devrez déterminer comment modifier le comportement du terminal ou passer à un autre terminal.

Gilles 'SO- arrête d'être méchant'
la source
Ça a l'air bien, mais ça ne marche pas. \eest la clé d'échappement, pas le caractère d'échappement…
Profpatsch
@Profpatsch Weird, cette liaison fonctionne pour moi. J'utilise Mutt 1.5 depuis presque toujours, peut-être que 1.4 fonctionne différemment? Cela fonctionne-t-il si vous utilisez \edans une macro macro editor \e[O5D \eb:?
Gilles 'SO- arrête d'être méchant'
1
Je suis sur Terminator, quand je frappe, Ctrl+Downje reçois ^[[1;5B, ça ne marche pas avec bind index \e[1;5B commandet pas \e1;5B aussi. Oh, je travaille avec Mutt 1.5.21 (Arch.;)
Profpatsch
1
@Profpatsch Ok, je peux reproduire cela. Il semble y avoir une limitation à 5 caractères: bind editor \e[1\;5 backward-wordfonctionne pour moi (et insère un supplément Dquand je rentre ESC [ 1 ; 5 D), mais les bind editor \e[1\;5D backward-wordrésultats à ESC [ 1 ; 5 Dne rien faire. Je vois une limitation à 8 caractères dans le code source ( MAX_SEQ), mais rien qui déclencherait à 5 caractères.
Gilles 'SO- arrête d'être méchant'
@Profpatsch Une solution de contournement serait de faire en sorte que votre terminal envoie des séquences plus courtes. Je ne sais pas si Terminator prend en charge cela.
Gilles 'SO- arrête d'être méchant'
15

J'ai trouvé la bonne réponse ici :

À l'intérieur de mutt, utilisez la commande

:exec what-key

Ensuite, en appuyant sur la touche souhaitée (comme Ctrl + flèche), vous pouvez apprendre à référencer n'importe quelle touche. Dans mon cas, j'obtiens <C-Up>Ctrl + Up.

alexis
la source
4
Dans le cas où vous auriez réussi à utiliser :exec what-keypour obtenir ces informations, mais que vous n'auriez pas pu trouver "quelle clé" appuyer pour sortir de la what-keycommande, la séquence de touches pour quitter est Ctrl-g.
KDN
@KDN: Merci. Ça devenait un peu gênant. ;)
Teekin
@KDN Ctrl-gest utilisé pour annuler les commandes dans emacs et de nombreux shells Unix.
Jangid