GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Local-Keymaps.html ・ emacs-doc.conao3.com

51.3.3 ローカルキーマップ

ここまで、グローバルマップの詳細について解説してきました。メジャーモードは、ローカルキーマップで独自のキーバインドを提供することで、Emacsをカスタマイズします。例えば、CモードはTABをオーバーライドし、Cコードに合わせて現在の行をインデントします。マイナーモードでもローカルキーマップを定義でき、マイナーモードが有効な間は、そのキーマップ内の定義がメジャーモードのローカルキーマップとグローバルキーマップの両方をオーバーライドします。さらに、バッファ内のテキストの一部で独自のキーマップを指定することもでき、これは他のすべてのキーマップをオーバーライドします。

ローカルキーマップでは、キーをプレフィックスキーマップとして定義することで、そのキーをプレフィックスキーとして再定義できます。また、そのキーがグローバルにもプレフィックスとして定義されている場合、ローカルとグローバルの定義(両方のキーマップ)が実質的に統合されます。つまり、プレフィックスキーに続くイベントを検索する際に、両方の定義が使用されます。例えば、ローカルキーマップで C-c をプレフィックスキーマップとして定義し、そのキーマップで C-z をコマンドとして定義している場合、これにより C-c C-z にローカルな意味が付与されます。これは、C-c で始まる他のシーケンスには影響しません。それらのシーケンスに独自のローカルバインディングがない場合は、グローバルバインディングがそのまま有効になります。

別の考え方としては、Emacsが複数イベントのキーシーケンスを処理する際、複数のキーマップを一つずつ参照して、キーシーケンス全体のバインディングを探すというものがあります。まず有効になっているマイナーモードのキーマップを確認し、次にメジャーモードのキーマップを確認し、最後にグローバルキーマップを確認します。これはキールックアップの正確な仕組みではありませんが、通常の状況で結果を理解するには十分でしょう。