Go to the first, previous, next, last section, table of contents.

ともかくキー・バィンディングに失敗するのは何故でしょう?

これは .emacs の中で 端末/ウィンドウ・システムのセットアップ・コードがロードされるまで 有効にならないコードを書いたからです. これは Emacs が起動するときに何をするかの順番に起因しています (詳細は質問 60 参照).

端末/ウィンドウ・システムのセットアップ・コードがロードされるまで 実行を遅らせるには, 変数 term-setup-hook まはた window-setup-hook に あなたのやりたい関数を設定します.

etc/OPTIONS に Emacs が起動するまでにどんなことをするかが書かれています.

term-setup-hook の例を挙げておきます:

  (setq term-setup-hook
        (function
         (lambda ()
           (cond ((string-match "\\`vt220" (or (getenv "TERM") ""))
                  ;; Make vt220's "Do" key behave like M-x:
                  (define-key CSI-map "29~" 'execute-extended-command))
                 ))))

これまでの失敗例をみると ESC 文字の指定が間違っていることが考えられます. Emacs Lisp の文字列では, ESC は "\e" と指定します. (ESC は ASCII 文字の 27 で直接そのものを書くこともできますが, 印刷や表示したりメールで送ったりするときに問題を引き起こす場合があるので お薦めできません.) 例えば, キー列 "ESC O D" にコマンド 'my-backward-char をバインドするときは 次のように指定します:

  (global-set-key "\eOD" 'my-backward-char)

次のようにも指定できます (全く等価な表現です):

  (define-key global-map "\eOD" 'my-backward-char)
  (define-key esc-map "OD" 'my-backward-char)

RET, LFD, DEL, ESC, SPC そして TAB はそれぞれ "\r", "\n", "\C-?", "\e", " " そして "\t" と書きます.


Go to the first, previous, next, last section, table of contents.