Emacsコマンド名を知っている場合、「goto-line」と言います。このコマンドにバインドされたキーシーケンスがあるかどうかを照会したい場合はどうなりますか?
逆に、キーシーケンスが与えられた場合、そのコマンド名を見つけるにはどうすればよいですか?
コマンドのキーバインディングを見つけるには、emacsヘルプの「where-is」機能を使用できます
C-h w command-name
コマンドに複数のバインディングが設定されている場合、それらがすべてリストされます。
逆の場合、キーシーケンスを指定すると、次のように入力できます。
C-h k key-sequence
実行されるコマンドを取得します。
次のように入力することにより、コマンドに関する詳細情報、および定義されている非インタラクティブ関数を取得できます。
C-h f function-name
これにより、キーバインディングなど、関数に関する詳細情報が得られます。
C-h f variable-name
キーマップは変数に保持されますが、キーコードは生の形式で保存されます。 C-h v isearch-mode-map
例。
ヘルプを入手するための詳細については、次のように入力できます。
C-h ?
C-h w
(またはF1-w
):where-is
RET somecommandname RET
あなたが求めていることだけを行います-追加情報なしでバインドされたキーをリストします。 :)
キーボードショートカット(またはEmacs用語ではキーシーケンス)にバインドされたコマンドをインタラクティブに取得するには、選択した回答を参照してください。
特定のキーシーケンスにバインドされたコマンドをプログラムで取得するには、キーシーケンスを取得してバインドされたコマンドを返すkey-binding
またはlookup-key
関数を使用します。関数key-binding
は、C-h k
が使用するものです。
(key-binding (kbd "C-h m"))
現在のすべてのキーマップを検索して、C-h m
にバインドされたコマンドを返します。関数lookup-key
は、単一のキーマップを検索します。
(lookup-key (current-global-map) (kbd "TAB")) ; => indent-for-tab-command
(lookup-key org-mode-map (kbd "TAB")) ; => org-cycle
(lookup-key text-mode-map (kbd "TAB")) ; => nil
(lookup-key isearch-mode-map (kbd "TAB")) ; => isearch-printing-char
特定のコマンドにバインドされたすべてのキーシーケンスをプログラムで取得するには、where-is-internal
がおそらく使用する関数です。 internal
で終わる関数の名前は、Emacsユーザーがinitファイルで使用することではないことを示唆しているように見えますが、docstringを持つこの関数はそうでないことを示唆しているようです。 where-is-internal
の使用を検討している人は、最初に キーの再マッピング が代わりに目標を達成できるかどうかを確認する必要があります。
特定のコマンド(たとえば、forward-char
)にバインドされているキーを見つけるための代替手段は、substitute-command-keys
(たとえば、(substitute-command-keys "\\[forward-char]")
)です。これは特に大きなテキストで役立ちます。
古い質問ですが、新しい読者の利益のために、キーバインディングを見るためのいくつかの他の素晴らしい方法があります
M-x describe-bindings
現在使用可能なすべてのバインディングのリスト、isearchの使用、発生などを使用して、このリストを有効に使用します。
M-x describe-prefix-map
これは、現在のモードで利用可能なすべてのバインディングを表示します。他の読み取り専用Emacsバッファーと同じように表示バッファーを使用できます。たとえば、文字列などを自由に検索できます。
M-x describe-mode
現在のモードに関する一般的な情報を提供するだけでなく、利用可能なすべてのキーバインディングもリストします。
M-x describe-minor-mode
マイナーモードの名前を入力するように求められ、そのマイナーモードの情報とキーバインディングが表示されます。
[〜#〜] note [〜#〜]:以下の例では追加パッケージを使用しています( [〜#〜] melpa [ 〜#〜] )
これにより、必要な直前のバインディングが表示されます。 C-x
やC-c
などのプレフィックスを入力すると、そのプレフィックスで使用可能なバインディングのリストが表示されます。
次を使用して、現在のモードで使用可能なキーバインディングのリストを表示することもできます。
M-x which-key-show-top-level
which-key-show-top-level
を選択したキーコードにバインドすると便利です。どこからでも利用可能なキーを表示できます。
たとえば、C-s
(isearch-forward
)には、多くの場合不明な広範なキーマップがあります。例えばM-s o
は現在の検索文字列を使用してoccur
を開始しますが、Emacsを使用して長年にわたってこのことを知りませんでした。 which-key
を持っていると、Emacsで多くの珍しい宝石を見つけることができました。
https://github.com/justbur/emacs-which-key
ガイドキーはwhich-key
とほぼ同じように機能します。機能を比較するために、このキーを確認することをお勧めします。