Frage

Ich versuche, einen Schlüssel-Bindung an Strg + TAB in Emacs zu setzen. Ich benutzte den folgenden Aufruf:

(global-set-key (read-kbd-macro "C-TAB") 'my-func)

Jedes Mal, wenn ich es, erhalte ich ein

<C-tab> is undefined

Fehlermeldung. Der Versuch, die Bindung an „C-Register“ führt zu einer Fehlermeldung zu setzen.

Wie kann ich meine Bindung an C-TAB?

War es hilfreich?

Lösung

(global-set-key [C-tab] 'my-func)

Andere Tipps

Im Gegensatz zu anderen vorgeschlagen haben, ist es eine gute Idee, kbd (oder read-kbd-macro die im Grunde dasselbe ist) zu verwenden, falls Sie jemals die gleichen Konfigurationsdateien in anderen Versionen von Emacs verwenden mögen; kbd arbeitet über mehrere Versionen von Emacs und XEmacs, wo die interne Darstellung von Tastenfolgen unterschiedlich sind.

(global-set-key (kbd "<C-tab>") 'my-func)

Das Eingabeformat von read-kbd-macro verwendet wird, in der docstring von edmacro-mode dokumentiert:

  
      
  • Die speziellen Wörter RET, SPC, TAB, DEL, LFD, ESC und NUL vertreten   spezielles Steuerzeichen. Die Worte müssen in Großbuchstaben geschrieben werden.

  •   
  • Ein Wort in spitzen Klammern, z.B. , oder , darstellt   eine Funktionstaste. (Beachten Sie, dass in der Standardkonfiguration, die   Funktionstaste und die Steuertaste RET sind synonym.)   Sie können spitze Klammern auf den Worte RET, SPC, usw. verwenden, aber sie   werden dort nicht erforderlich.

  •   

Das ist etwas leider geschrieben; die TAB bezeichnet im ersten Aufzählungspunkt ist das ASCII-Zeichen für TAB, und das Hinzufügen des Steuer Modifikator macht etwas unsinnig es. Wenn Sie bei gedrückter Ctrl-Tab drücken, Emacs sieht es (über Ihr Windowing-System, es wird nicht in einem Text-Terminal arbeiten). Als <tab> mit Control Modifikator, die Sie als C-<tab> oder <C-tab> darstellen

Es ist, weil Sie read-kbd-macro falsch verwenden. Wenn Sie sehen, was auf eine Taste gebunden ist:

C-h k C-TAB

Emacs sagt Ihnen:

<C-tab> is undefined.

Sie müssen die <> in Ihrem Aufruf von read-kbd-macro aufzunehmen.

(global-set-key (read-kbd-macro "<C-tab>") 'my-func)

Und ich weiß nicht, wie <C-TAB> zu erzeugen, aber es ist nicht die gleiche wie <C-tab>.

(equal (kbd "<C-TAB>") (kbd "<C-tab>"))
->
nil

Beachten Sie, dass Sie auch global-set-key interaktiv aufrufen können. Sie können dann den richtigen Bindung Befehl mit repeat-complex-command sehen (siehe auch KeybindingGuide ):

  1. M-x: global-set-key
  2. Geben Sie die Tastenkombination Sie wollen
  3. Mit C-x ESC ESC (repeat-complex-command) den apropiate Befehl zu sehen. In Ihrem Fall erhalte ich:

    (global-set-key (quote [C-tab]) (quote my-func))
    

Statt read-kbd-macro zu verwenden, versuchen, die mehr Klar Syntax?

;(global-set-key [(control tab)] 'my-func)

Vielleicht ist die schlichteren Syntax wird einen Unterschied machen?

Mehr read-kbd-macro und global-set-Taste .

In der Emacs-Referenzhandbuch lispelt, Abschnitt 21.1 "Tastenfolgen", die sie verweisen mit \ t der Tab-Taste darzustellen.

die Syntax in dem Lisp-Referenzhandbuch gezeigt verwenden, würde ich den folgenden Befehl verwenden:

(global-set-key (kbd "C-\t") 'my-func)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top