Wie binde ich <Control> <Arrowkey> in Mutt?

8

Ich stecke hier fest:

Ist es möglich, eine <enter>, <backspace>, <up>, <down>, <left>, <right>mit der Kontrolle zusammenzubinden?

\C<foo>erscheint wie |foo>in der Hilfe und ^<up>ist nicht gebunden.
'\C<foo>, '\C <foo>'arbeite auch nicht (gleich mit "stattdessen).

<control> existiert nicht.

Sie tatsächlich können erhalten Sie ^<foo>in der Hilfe zu zeigen, aber nur , wenn Sie Karte ^<foo>, die nicht genau das , was ich will. ;)

Profpatsch
quelle

Antworten:

5

Zunächst müssen Sie feststellen, ob Ihr Terminal für diese Tastenkombinationen unterschiedliche Escape-Sequenzen sendet. Anwendungen, die in Terminals ausgeführt werden, erhalten Zeichen als Eingabe, keine Schlüssel. Funktionstasten werden als Steuerzeichen oder als Escape-Sequenzen codiert, die mit dem Escape-Zeichen beginnen (das Sie wie \ein einer Tastenkombination schreiben können ).

Um die von einer Tastenkombination in einem Terminal gesendete Escape-Sequenz anzuzeigen, drücken Sie an einer Shell-Eingabeaufforderung Ctrl+ Vund dann die Tastenkombination. Wenn ich zum Beispiel an einer Shell-Eingabeaufforderung Ctrl+ V Ctrl+ drücke, wird LeftFolgendes angezeigt ^[O5D. ^[ist der Escape-Charakter, also müsste ich \eO5DMutt binden , damit er auf Ctrl+ reagiert Left:

bind editor \eO5D backward-word

Einige Terminals senden dieselbe Escape-Sequenz für denselben Schlüssel mit unterschiedlichen Modifikatoren. In diesem Fall müssen Sie herausfinden, wie Sie das Verhalten des Terminals ändern oder zu einem anderen Terminal wechseln können.

Gilles 'SO - hör auf böse zu sein'
quelle
Hört sich gut an, funktioniert aber nicht. \eist der Escape-Schlüssel, nicht das Escape-Zeichen…
Profpatsch
@Profpatsch Seltsam, diese Bindung funktioniert bei mir. Ich benutze Mutt 1.5 seit ungefähr ewig, vielleicht funktioniert 1.4 anders? Funktioniert es, wenn Sie \ein einem Makro verwenden : macro editor \e[O5D \eb?
Gilles 'SO - hör auf böse zu sein'
1
Ich bin auf Terminator, wenn ich Ctrl+Downdrücke ^[[1;5B, funktioniert es nicht mit bind index \e[1;5B commandund auch nicht mit \e1;5B . Oh, ich arbeite mit Mutt 1.5.21 (Arch .;)
Profpatsch
1
@Profpatsch Ok, ich kann das reproduzieren. Es scheint eine Beschränkung auf 5 Zeichen zu geben: Funktioniert bind editor \e[1\;5 backward-wordfür mich (und fügt Dbei der Eingabe ein zusätzliches ein ESC [ 1 ; 5 D), führt aber bind editor \e[1\;5D backward-worddazu ESC [ 1 ; 5 D, dass nichts unternommen wird. Ich sehe eine Beschränkung auf 8 Zeichen im Quellcode ( MAX_SEQ), aber nichts, was bei 5 Zeichen ausgelöst würde.
Gilles 'SO - hör auf böse zu sein'
@Profpatsch Eine Problemumgehung besteht darin, dass Ihr Terminal kürzere Sequenzen sendet. Ich weiß nicht, ob Terminator dies unterstützt.
Gilles 'SO - hör auf böse zu sein'
14

Ich habe hier die richtige Antwort gefunden :

Verwenden Sie in mutt den Befehl

:exec what-key

Durch Drücken der gewünschten Taste (wie Strg + Pfeil) können Sie lernen, wie Sie auf eine beliebige Taste verweisen. In meinem Fall bekomme ich <C-Up>für Strg + Up.

alexis
quelle
4
Falls es Ihnen gelungen ist :exec what-key, diese Informationen abzurufen, Sie dann aber nicht herausfinden konnten, welche Taste gedrückt werden muss, um aus dem what-keyBefehl auszusteigen, lautet die zu beendende Tastenfolge Ctrl-g.
KDN
@KDN: Danke. Es wurde ein bisschen peinlich. ;)
Teekin
@KDN Ctrl-gwird verwendet, um Befehle in Emacs und vielen Unix-Shells abzubrechen.
Jangid