web-dev-qa-db-ja.com

emacsコマンド名を指定すると、キーバインディングはどのように見つかりますか? (およびその逆)

Emacsコマンド名を知っている場合、「goto-line」と言います。このコマンドにバインドされたキーシーケンスがあるかどうかを照会したい場合はどうなりますか?

逆に、キーシーケンスが与えられた場合、そのコマンド名を見つけるにはどうすればよいですか?

96
Sake

コマンドのキーバインディングを見つけるには、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 ?
145
Adam Rosenfield

C-h w(またはF1-w):where-is RET somecommandname RET

あなたが求めていることだけを行います-追加情報なしでバインドされたキーをリストします。 :)

12
Glen Best

キーボードショートカット(または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]"))です。これは特に大きなテキストで役立ちます。

12
Jisang Yoo

古い質問ですが、新しい読者の利益のために、キーバインディングを見るためのいくつかの他の素晴らしい方法があります

M-x describe-bindings

現在使用可能なすべてのバインディングのリスト、isearchの使用、発生などを使用して、このリストを有効に使用します。

M-x describe-prefix-map

これは、現在のモードで利用可能なすべてのバインディングを表示します。他の読み取り専用Emacsバッファーと同じように表示バッファーを使用できます。たとえば、文字列などを自由に検索できます。

M-x describe-mode

現在のモードに関する一般的な情報を提供するだけでなく、利用可能なすべてのキーバインディングもリストします。

M-x describe-minor-mode

マイナーモードの名前を入力するように求められ、そのマイナーモードの情報とキーバインディングが表示されます。

[〜#〜] note [〜#〜]:以下の例では追加パッケージを使用しています( [〜#〜] melpa [ 〜#〜]

どのキー

これにより、必要な直前のバインディングが表示されます。 C-xC-cなどのプレフィックスを入力すると、そのプレフィックスで使用可能なバインディングのリストが表示されます。

次を使用して、現在のモードで使用可能なキーバインディングのリストを表示することもできます。

M-x which-key-show-top-level

which-key-show-top-levelを選択したキーコードにバインドすると便利です。どこからでも利用可能なキーを表示できます。

たとえば、C-sisearch-forward)には、多くの場合不明な広範なキーマップがあります。例えばM-s oは現在の検索文字列を使用してoccurを開始しますが、Emacsを使用して長年にわたってこのことを知りませんでした。 which-keyを持っていると、Emacsで多くの珍しい宝石を見つけることができました。

https://github.com/justbur/emacs-which-key

ガイドキー

ガイドキーはwhich-keyとほぼ同じように機能します。機能を比較するために、このキーを確認することをお勧めします。

https://github.com/kai2nenobu/guide-key

3
ocodo