回答:
コマンドのキー割り当てを見つけるだけの場合は、emacsヘルプの「where-is」機能を使用できます
C-h w command-name
コマンドに複数のバインディングが設定されている場合、それらはすべてリストされます。
逆の場合、キーシーケンスを指定すると、次のように入力できます。
C-h k key-sequence
実行されるコマンドを取得します。
次のように入力することで、コマンドに関する詳細な情報と、定義されている非インタラクティブな関数を取得できます。
C-h f function-name
キーバインディングを含む、関数に関する詳細情報を提供します。
C-h v variable-name
(バインドされた)変数に関する情報を提供します。キーマップは変数に保持されますが、キーコードは未加工の形式で保存されます。C-h v isearch-mode-map
例を試してください。
ヘルプを取得するための詳細なヘルプについては、次のように入力できます
C-h ?
C-h w <function name>
完全なドキュメントではなく、キーがどこにあるのかを知ることもできます。逆に、C-h c <key sequence>
どの関数がキーシーケンスにバインドされているかを知ることもできます。
C-h
ウィンドウマネージャーで何か他のものにバインドしている場合:はとC-h w
同等M-x where-is
です。C-h k
と同等M-x describe-key
です。C-h f
と同等M-x describe-function
です。C-h v
と同等M-x describe-variable
です。C-h ?
と同等M-x help-for-help
です。のf1
代わりに使用できることにも注意してくださいC-h
。
キーボードショートカット(または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]")
)です。これは特に大きなテキストで役立ちます。
where-is-internal
使用しても問題ないことが示唆されています。また、従来はwhere-is--internal
「プライベート」関数には(二重ダッシュに注意)のような形式を使用しています。
-internal
そこにサフィックスの使用法が記載されています:gnu.org/software/emacs/manual/html_node/elisp/…。内部C関数に使用する必要があります。
古い質問ですが、新しい読者のために、キーバインディングを確認する方法が他にもいくつかあります。
M-x describe-bindings
現在利用可能なすべてのバインディングを一覧表示します。このリストを活用するには、isearch、occurenceなどを使用します。
M-x describe-prefix-map
これは、現在のモードで利用可能なすべてのバインディングを表示します。他の読み取り専用のEmacsバッファーと同じように表示バッファーを使用できます。たとえば、文字列を自由に検索できます。
M-x describe-mode
現在のモードに関する一般的な情報を提供するだけでなく、利用可能なすべてのキーバインディングも一覧表示します。
M-x describe-minor-mode
マイナーモードの名前を入力するように求められ、次にそのマイナーモードの情報とキーバインディングが表示されます。
注:以下の例では追加のパッケージを使用しています(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
機能を比較するためにガイドを確認することをお勧めします。