2015-12-04 14 views
8

In Emacs möchte ich eine bestimmte Tastenkombination an einen Befehl binden. Da ich jedoch Emacs im Terminalmodus innerhalb von iTerm2 unter OS X verwende, muss ich das Schlüssel-Combo in die Zeichen-Escape-Sequenz übersetzen und diese Sequenz mit iTerm2 registrieren, damit es die Tastenkombination erkennt.Finden Sie die entsprechende Escape-Sequenz für eine bestimmte Schlüsselkombination

Aber wie finde ich bei einer Tastenkombination die entsprechende Sequenz? Zum Beispiel fand ich, dass so etwas wie ^[[1;8A-Ctrl + Alt entspricht + up (wo ich Alt funktionieren, wie +Esc in iTerm2 konfiguriert haben), aber ich habe keine Ahnung, wie das Tastenkombination in dieser übersetzt bestimmte Reihenfolge.

Gibt es eine Möglichkeit, die Escape-Sequenz für eine bestimmte Tastenkombination nachzuschlagen oder auszuarbeiten? Zum Beispiel, was ist die Sequenz für Ctrl + Alt + r?

Eine verwandte Frage, kann mir jemand, der die Beziehung zwischen der Einrichtung eine Tastenkombination mit seiner entsprechenden Sequenz in iTerm2 erklären und zu machen Emacs eine Sequenz, die in seine interne Schlüsseldarstellung (z.B. (define-key input-decode-map "[escape_sequencehere]" [internal_key_representation_here]) unter Verwendung von input-decode-map innen .emacs übersetzen? Es scheint mir, dass die Einrichtung in iTerm2 allein ausreicht, um die Bindung in Emacs arbeiten zu lassen, also wann und warum müssen wir die letztere in .emacs einrichten? (und vielleicht wann brauchen wir beide, damit etwas funktioniert?)

+0

Ich nehme an, Sie haben bereits die relevante Dokumentation wie http://www.emacswiki.org/emacs/EmacsForMacOS und http://www.emacswiki.org/emacs/MetaKeyProblems gelesen? – jtahlborn

Antwort

1

Einige der Tastenkombinationen werden direkt an die Anwendung gesendet, die unter iTerm2 ausgeführt wird. Sie können es (siehe In bash, how do I bind a function key to a command?) oder

bash-3.2$ ^[[1;10A (in this case I hit ctrl + v before shift+alt+up) 
  • sed -n l (beachten Sie, es ist Klein L) erhalten

    • von ctrl + v Ansatz. Zum Beispiel können Sie sehen, was die Anwendung erhält, wenn man (shift + alt + up) senden:

      bash-3.2$ sed -n l 
      ^[[1;10A 
      \033[1;10A$ 
      

    Wenn einige Tastenkombination aus irgendeinem Grund nicht erhalten, können Sie iTerm2-let it pass anweisen, und wo es zu eine Tastenkombination, die Sie wie oben beschrieben erkennen können.
    Zum Beispiel können Sie ctrl + alt + cmd + R an ESC+sdf senden und Ihr Terminal wird ^[sdf empfangen, die Sie einem Befehl in Emacs zuweisen können.