Emacs のカスタマイズ

初版作成  2011.12.15

私が普段使っている .emacs (漢字コードは EUC)

参考にしたサイト


以下の説明で C-u はコントロールキーを押しながら u を押すことを表し、 M-h は ESC キーを押した後で h を押すことを表す。

主なカスタマイズ項目について説明する。

◆◆ 画面の色 ◆◆

デフォルトではキーワードに色が付く。黒背景では見づらい。 色をつけるのをやめるには

    (global-font-lock-mode nil)

ミニバッファの色つけをやめるには

   (set-face-foreground 'minibuffer-prompt "white")
   (set-face-background 'minibuffer-prompt "black")

◆◆ 2ストロークキー ◆◆

自分用の2ストロークキーが 1つあると便利である。C-j が押しやすいので、 2ストロークキーに割り当てる。C-q も VZ エディタを使って いた頃からの習慣なので2ストロークキーに割り当てる。

(global-unset-key "\C-q")                           ; vz
(global-unset-key "\C-j")

(global-set-key "\C-q\C-r" 'beginning-of-buffer) ; vz
(global-set-key "\C-q\C-c" 'end-of-buffer)       ; vz
(global-set-key "\C-q\C-j" 'goto-line)           ; vz
(global-set-key "\C-q\C-q" 'quoted-insert)       ; emacs-origin C-q

(global-set-key "\C-j\C-j" 'compile)             ; yabu 
(global-set-key "\C-j\C-l" 'load-dot-emacs)      ; yabu

(defun load-dot-emacs()
  "load ~/.emacs"
  (interactive)
  (load-file "~/.emacs")
  (message "load ~/.emacs")
)

従来 C-j に割り当てられてきた機能 eval-print-last-sexp は C-q C-j に 割り当てる。

◆◆ カーソル関係 ◆◆

「バックスペース」と「上へのスクロール (scroll-down: デフォルトで M-v に割り当てられている) 」は ctrl キーに割り当てた方が編集がしやすい。

ターミナルエミュレータレベルで C-o が toggle-input-method に 割り当てられている場合が多いので、 scroll-down を C-t に割り当てる 人が多いと思われるが、私は C-o を scroll-down に 割り当て、C-t を漢字変換に割り当てた方が編集しやすいと思う (C-p が 1 行上なので scroll-down がその隣の C-o にあった方が 手の動きがスムーズだと思う)。

(global-set-key "\C-h" 'backward-delete-char)
(global-set-key "\C-o" 'scroll-down)
(global-set-key "\C-t" 'toggle-input-method)

mlterm の場合、デフォルトでは C-o を mlterm が横取りしてしまう ので、~/.mlterm/main で

use_xim = false
とする。

◆◆ tab キー (C-i) の動作設定 ◆◆

mule-19.34 から emacs-22 に乗り換えると、 tab キー (C-i) を押しても思い通りに tab が入らない。

Fundamental mode にしても思い通りに入らない。 Fundamental mode では tab は indent-for-tab-command という関数を呼ぶ。 indent-for-tab-command は indent.el の中で定義されている。

(setq tab-always-indent nil)
(setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60))

しても javascript の場合 if, for の後は効くが function の後には効かない。

mule-19.34 と emacs-22 の違いは indent-line-function という 変数のデフォルト値が異なる。

emacs-22 では indent-relative なのに対して、 mule-19.34 では indent-to-left-margin に設定されている。

(setq indent-line-function 'indent-to-left-margin)

と設定すると Fundamental mode では tab キーにより tab が 入るようになる。