EmacsでキーバインドをCtrl + TABに設定しようとしています。私は次の呼び出しを使用しました:
(global-set-key (read-kbd-macro "C-TAB") 'my-func)
しかし、私がそれを使うときはいつでも、私は
<C-tab> is undefined
エラーメッセージ。バインディングを「C-tab」に設定しようとすると、エラーメッセージが表示されます。
バインディングをC-TABに設定するにはどうすればよいですか?
(global-set-key [C-tab] 'my-func)
他の人が提案しているのとは異なり、他のバージョンのEmacsで同じ構成ファイルを使用したい場合は、kbd
(または基本的に同じものであるread-kbd-macro
)を使用することをお勧めします。 kbd
は、キーシーケンスの内部表現が異なるEmacsとXEmacsのいくつかのバージョンで機能します。
(global-set-key (kbd "<C-tab>") 'my-func)
read-kbd-macro
で使用される入力形式は、edmacro-mode
のドキュメント文字列に記載されています。
特別な単語RET、SPC、TAB、DEL、LFD、ESC、およびNULは、特別な制御文字を表します。単語は大文字で書く必要があります。
<return>、<down>、<f1>などの山かっこで囲まれた単語は、ファンクションキーを表します。 (標準構成では、ファンクションキー<return>とコントロールキーRETは同義語であることに注意してください。)RET、SPCなどの単語に山かっこを使用できますが、必須ではありません。
これはやや残念ながら書かれています。最初の箇条書きで参照されているTABは、TABのASCII文字であり、Control修飾子を追加すると、意味がありません。Control-Tabを押すと、Emacsはそれを(ウィンドウを介して)表示します。システム。テキスト端末では機能しません)<tab>
としてC-<tab>
または<C-tab>
として表すことができるControl修飾子を使用します。
read-kbd-macro
を誤って使用しているためです。キーにバインドされているものが表示されたら:
C-h k C-TAB
Emacsはあなたに言います:
<C-tab> is undefined.
read-kbd-macro
の呼び出しに<>を含める必要があります。
(global-set-key (read-kbd-macro "<C-tab>") 'my-func)
また、<C-TAB>
の生成方法はわかりませんが、<C-tab>
とは異なります。
(equal (kbd "<C-TAB>") (kbd "<C-tab>"))
->
nil
global-set-key
をインタラクティブに呼び出すこともできることに注意してください。次に、repeat-complex-command
を使用して正しいバインディングコマンドを確認できます( KeybindingGuide も参照)。
M-x: global-set-key
C-x ESC ESC
(repeat-complex-command
)を使用して、適切なコマンドを確認します。あなたの場合、私は次のようになります。
(global-set-key (quote [C-tab]) (quote my-func))
read-kbd-macro
を使用する代わりに、よりわかりやすい構文を使用してみてください。
;(global-set-key [(control tab)] 'my-func)
おそらく、より単純な構文が違いを生むでしょうか?
read-kbd-macro および global-set-key の詳細。
Gnu emacs LISPリファレンスマニュアルのセクション21.1「キーシーケンス」では、タブキーを表すために\ tを使用して参照しています。
LISPリファレンスマニュアルに示されている構文を使用して、次のコマンドを使用します。
(global-set-key (kbd "C-\t") 'my-func)