次: , 前: User Input, 上: Top


1.6 キー

キー列(key sequence)(キーと略記)は、 一塊で『1つのコマンド』としての意味を持つ入力イベントの列です。 Emacsのコマンド列の中には、1文字のみ、つまり、 1イベントのみであるものもあります。 たとえば、C-fはポイントを1文字先へ進めます。 しかし、なかには、起動に2つ以上のイベントを必要とするコマンドもあります。

あるイベント列が1つのコマンドを起動するのに十分である場合、 それらを完結キー(complete key)と呼びます。 完結キーの例としては、C-aX、<RET>、 <NEXT>(ファンクションキーの1つ)、<DOWN>(矢印キー)、C-x C-fC-x 4 C-fがあります。 完結するほど十分に長くないイベント列を、 プレフィックスキー(prefix key)と呼びます。 上の例では、C-xC-x 4が、プレフィックスキーです。 すべてのキー入力列は、完結キーかプレフィックスキーのどちらかです。

Emacs標準のコマンド割り当てでは、ほとんどの1文字は完結キーです。 残りの少数はプレフィックスキーです。 プレフィックスキーは、後続の入力イベントと結び付いて、 それ自体が完結キーやプレフィックスキーとなる、 さらに長いキーの列を作ります。 たとえば、C-xはプレフィックスキーなので、 C-xに続く入力イベントと結び付いて2文字のキー列を作ります。 C-x C-fC-x bを含めて、 これらのキー列のほとんどは完結キーになります。 C-x 4C-x rのように、 いくつかのキー列はそれ自体がプレフィックスキーとなり、 3文字のキー列を作ります。 キー列の長さに制限はありませんが、 実用上は4文字を超える長さのキー列を使うことはめったにありません。

これに対して、完結キーには入力イベントを付け加えることができません。 たとえば、2文字の列C-f C-kはキーではありません。 というのは、C-fがそれ自体で完結キーだからです。 C-f C-kにコマンドとしての独立した意味付けをすることは不可能です。 C-f C-kは、2つのキー列であって、1つのキー列ではありません。

Emacsのプレフィックスキーは、C-cC-hC-xC-x <RET>C-x @C-x aC-x nC-x rC-x vC-x 4C-x 5C-x 6、<ESC>、M-gM-jです。 しかし、これらは固定されているわけではなく、 Emacsのキー割り当ての標準設定となっているだけです。 Emacsをカスタマイズすれば、新しいプレフィックスキーを設定したり、 これらを解除したりできます。 See Key Bindings

プレフィックスキーを設定したり解除したりすると、 可能なキー列の集合を変えることになります。 たとえば、C-fをプレフィックスキーとして再定義すると、 C-f C-kは自動的に (これをさらにプレフィックスとして定義しない限り完結した)キーになります。 逆に、C-x 4をプレフィックスでなくすると、C-x 4 f (またはC-x 4 anything)は、もはやキーではなくなります。

プレフィックスキーのあとにヘルプ文字(C-hや<F1>)を打つと、 そのプレフィックスで始まるコマンド一覧を表示できます。 歴史的な背景から、C-hが機能しないプレフィックス文字も存在します。 これらの文字では、C-hが別の意味に割り当てられていて、 容易には変更できないのです。 しかし、<F1>はすべてのプレフィックスに対して使えるはずです。