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. ;)

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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.