Emacsのキーを再定義するには,キーマップのエントリを変更します.グロー バル・キーマップの変更も可能で,その場合,変更はすべての主モードで有効で す(ただし,同じキーをローカルに定義しているモードは別です).またカレント バッファのローカル・マップの変更もできます.この場合は,同じ主モードを使 用するすべてのバッファに影響を与えます.
たとえば
M-x global-set-key RET C-f next-line RET
はC-fで1行下がるように定義し直します.cmdが後に読みとられる ことはkeyの確認にもなっています.
この関数では,再定義を行なう接頭辞キーマップを指定する手段は提供されて いません.keyに接頭辞を含めることができるのでこれは不必要です. keyは1文字ずつ,完全なキーになる(つまり接頭辞キーでなくなる)まで読 みとられます.従ってkeyとしてC-fを入力すると,それで完了しま す.ミニバッファは直ちにcmdを読みにかかります.しかしC-xと入 力すると別の文字が読みとられます.たとえばそれが4だとさらに別の文 字が読まれます.たとえば
M-x global-set-key RET C-x 4 $ spell-other-window RET
と入力すれば,C-x 4 $をコマンドspell-other-window
(実際には
ありません)を実行するように再定義します.
キーマップを修正する最も一般的な方法はLispコード(`.emacs'ファイル
などで)で使用されるdefine-key
関数を使うことです.
define-key
は3つの引数,キーマップ,修正するキー,新しい定義をとり
ます.See section 初期化ファイル,.emacs.
substitute-key-definition
も同様に使えます.これは引数を3つ取り
ます.古い定義,新しい定義,キーマップです.キーマップで古い定義に割り当
てられているすべてのキーを新しい定義に割り当て直します.