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

23.1 キーマップの基本

キーマップとは、さまざまなキーシーケンスに対するキーバインドを規定するLispのデータ構造です。

単一のキーマップでは、個々のイベントの定義を直接指定します。キーシーケンスが単一のイベントで構成される場合、キーマップにおけるそのバインドが、そのイベントに対するキーマップの定義となります。より長いキーシーケンスのバインドは、反復的な処理によって求められます。まず最初のイベントの定義(それ自体がキーマップである必要があります)を探し、次にそのキーマップ内で2番目のイベントの定義を探し、という手順を、キーシーケンス内のすべてのイベントが処理されるまで繰り返します。

キーシーケンスのバインドがキーマップである場合、そのキーシーケンスをプレフィックスキーと呼びます。そうでない場合は、完全キーと呼びます(これ以上イベントを追加できないためです)。バインドがnilである場合、そのキーを未定義と呼びます。プレフィックスキーの例としては、C-c、C-x、C-x 4などが挙げられます。定義済みの完全キーの例としては、X、RET、C-x 4 C-fなどが挙げられます。未定義の完全キーの例としては、C-x C-gやC-c 3などが挙げられます。詳細については、プレフィックスキーを参照してください。

キーシーケンスのバインディングを求める際のルールでは、中間のバインディング(最後から前のイベントで見つかるもの)がすべてキーマップであることを前提としています。そうでない場合、そのイベント列は一つの単位を構成せず、実質的に一つのキーシーケンスとは言えません。言い換えれば、任意の有効なキーシーケンスの末尾から1つ以上のイベントを削除すれば、必ずプレフィックスキーが得られます。例えば、C-f C-nはキーシーケンスではなく、C-fはプレフィックスキーではないため、C-fで始まるより長いシーケンスはキーシーケンスになり得ません。

可能な複数イベントのキーシーケンスの集合は、プレフィックスキーのバインドに依存するため、キーマップによって異なる場合があり、またバインドが変更されると変わることもある。ただし、単一イベントのシーケンスは、その正当性がプレフィックスキーに依存しないため、常にキーシーケンスとなる。

常に複数のプライマリキーマップがアクティブ――つまり、キーバインドの検索に使用されている――状態にあります。これらには、すべてのバッファで共有されるグローバルマップ、通常は特定のメジャーモードに関連付けられるローカルキーマップ、および現在有効なマイナーモードに属する0個以上のマイナーモードキーマップがあります。(すべてのマイナーモードにキーマップがあるわけではありません。)ローカルキーマップのバインドは、対応するグローバルバインドをシャドウします(すなわち、優先されます)。マイナーモードキーマップは、ローカルおよびグローバルの両方のキーマップをシャドウします。詳細はアクティブキーマップを参照してください。