Next: , Previous: , Up: Keymaps   [Contents][Index]


21.15 キーのバインドのためのコマンド

このセクションではキーバインディングを変更するための便利な対話的インターフェイスを説明します。これらはdefine-keyを呼び出すことにより機能します。

ユーザーはinitファイルにたいしてシンプルなカスタマイズを行うとき、しばしばglobal-set-keyを使用します。たとえば、

(global-set-key (kbd "C-x C-\\") 'next-line)

または

(global-set-key [?\C-x ?\C-\\] 'next-line)

または

(global-set-key [(control ?x) (control ?\\)] 'next-line)

は、次の行に移動するようにC-x C-\を再定義します。

(global-set-key [M-mouse-1] 'mouse-set-point)

は、メタキーを押してマウスの第一ボタン(左ボタン)をクリックすると、クリックした箇所にポイントをセットするように再定義します。

バインドするキーのLisp指定に非ASCII文字のテキストを使用するときには注意してください。マルチバイトとして読み取られたテキストがあるなら、Lispファイル内でマルチバイトテキストが読み取られるときのように(Loading Non-ASCIIを参照)、マルチバイトとしてキーをタイプしなければなりません。たとえば、

(global-set-key "ö" 'my-function) ; bind o-umlaut

または

(global-set-key ?ö 'my-function) ; bind o-umlaut

をLatin-1のマルチバイト環境で使用すると、これらのコマンドはLatin-1端末から送信されたバイトコード246(M-v)ではなく、コード246のマルチバイト文字に実際にはバインドされます。このバインディングを使用するためには適切な入力メソッド(Input Methods in The GNU Emacs Manualを参照)を使用して、キーボードをデコードする方法をEmacsに教える必要があります。

Command: global-set-key key binding

この関数はカレントグローバルマップ内でkeyのバインディングをbindingにセットする。

(global-set-key key binding)
≡
(define-key (current-global-map) key binding)
Command: global-unset-key key

この関数はカレントグローバルマップからkeyのバインディングを削除する。

プレフィクスとしてkeyを使用する長いキーの定義の準備に使用するのもこの関数の1つの用途である。keyが非プレフィクスのようなバインディングをもつならこの使い方は許容されないだろう。たとえば、

(global-unset-key "\C-l")
    ⇒ nil
(global-set-key "\C-l\C-l" 'redraw-display)
    ⇒ nil

この関数は以下のようにdefine-keyを使用するのと等しい:

(global-unset-key key)
≡
(define-key (current-global-map) key nil)
Command: local-set-key key binding

この関数はカレントローカルキーマップ内のkeyのバインディングをbindingにセットする。

(local-set-key key binding)
≡
(define-key (current-local-map) key binding)
Command: local-unset-key key

この関数はカレントローカルキーマップからkeyのバインディングを削除する。

(local-unset-key key)
≡
(define-key (current-local-map) key nil)