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

51.3.5 キーバインドのインタラクティブな変更

Emacsのキーを再定義するには、キーマップのエントリを変更します。グローバルキーマップを変更すれば、その変更はすべてのメジャーモードに適用されます(ただし、同じキーに対して独自のオーバーライド用ローカルバインディングを持つモードは除きます)。あるいは、ローカルキーマップを変更すれば、同じメジャーモードを使用しているすべてのバッファに適用されます。

本節では、現在のEmacsセッションでキーを再バインドする方法について説明します。キーの再バインドを今後のEmacsセッションにも反映させる方法については、初期化ファイルでのキー再バインドを参照してください。

M-x keymap-global-set RET key cmd RET

cmdを実行するため、keyをグローバルに定義する。

M-x keymap-local-set RET key cmd RET

cmdを実行するため、keyをローカル(現在適用中のメジャーモード内)で定義します。

M-x keymap-global-unset RET key

グローバルマップで key を undefined にする。

M-x keymap-local-unset RET key

key をローカル(現在適用中のメジャーモード内)で未定義にする。

例えば、以下は C-z を shell コマンド(対話型サブシェル を参照)にバインドし、C-z の通常のグローバル定義を置き換えます:

M-x keymap-global-set RET C-z shell RET

keymap-global-set コマンドは、キーの後に続くコマンド名を読み取ります。キーを押すと、目的のキーをバインドしていることを確認できるよう、次のようなメッセージが表示されます:

Set key C-z to command:

ファンクションキーやマウスイベントも同様に再定義できます。再割り当てするキーを指定する際は、ファンクションキーを入力するか、マウスをクリックしてください。

複数のイベントを含むキーも、同様の方法で再バインドできます。Emacsは、完全なキー(つまりプレフィックスキーではないもの)になるまで、再バインドするためのキーの読み取りを続けます。したがって、key に対して C-f と入力すればそこで終了し、直ちにミニバッファに入って cmd の読み取りに入ります。しかし、C-x と入力した場合は、それがプレフィックスであるため、別の文字を読み取ります。それが 4 という別のプレフィックス文字であれば、さらにもう1文字を読み取り、というように続きます。例えば、

M-x keymap-global-set RET C-x 4 $ spell-other-window RET

C-x 4 $ を再定義し、(架空の)コマンド spell-other-window を実行する。

keymap-global-unset を使うと、キーのグローバル定義を削除できます。これによりキーは 未定義 状態となり、入力しても Emacs はビープ音を鳴らすだけです。同様に、keymap-local-unset を使うと現在のメジャーモードのキーマップ内でキーが未定義となり、そのメジャーモードではグローバル定義(あるいは定義がないこと)が再び有効になります。

キーを再定義(または未定義に)した後、その変更を取り消したい場合、キーを未定義にしても不十分であり、標準の定義でキーを再定義する必要があります。キーの標準定義名を確認するには、新規に起動したEmacsでファンダメンタルモードのバッファに移動し、C-h c を使用してください。本マニュアルのキーに関するドキュメントには、コマンド名も記載されています。

誤ってコマンドを実行してしまうのを防ぎたい場合は、キーの定義を解除するよりも、コマンドを無効にする方が適切です。無効にしたコマンドは、本当に実行したいときに手間が少なくて済みます。コマンドの無効化を参照してください。