emacs初心者の設定いろいろ
emacsを使い始めて早7年、初心者を名乗るのもなんだかなぁという感じではあるが、積極的に勉強せずにここまできてしまったので、未だに初心者レベルのことしかできない。しかし、初心者なりにいろいろと.emacsには便利な設定がたまってきたので、ここではそれらを紹介してみたい。
; ~/elispをロードパスに追加する。ダウンロードしてきたelispはぜんぶここに突っ込む (setq load-path (cons (expand-file-name "~/elisp") load-path)) ; C-x bでバッファリストをミニバッファに表示する。超便利。 (iswitchb-mode 1) ; Ctrl-SPACEでマークセットするときに選択部分に色が付くようになる (transient-mark-mode t) ; M-gでgoto-lineを使えるようにする (global-set-key "\M-g" 'goto-line) ; Xを使っている場合の起動を高速化するらしいがよくわかってない (modify-frame-parameters nil '((wait-for-wm . nil))) ; カーソルの色を変更 (add-to-list 'default-frame-alist '(cursor-color . "SlateGray")) ; スタートアップメッセージを非表示にする (setq inhibit-startup-message t) ; 行番号だけでなく列番号も表示する (column-number-mode 1) ; ツールバーは使わないので非表示に。意見が分かれるところかも。 (tool-bar-mode 0) ; メニューバーも同様。 (menu-bar-mode 0) ; 対応するカッコを色付けする (show-paren-mode t) ; 行間をちょっと開ける (setq-default line-spacing 0.15) ; インデントをタブではなく空白で行う (setq-default indent-tabs-mode nil) ; xのクリップボードを使えるように (setq x-select-enable-clipboard t) ; migemoを有効にする (require 'migemo) ; dmacroを有効にする ; http://www.pitecan.com/papers/JSSSTDmacro/dmacro.el (defconst *dmacro-key* "\C-p" "繰返し指定キー") (global-set-key *dmacro-key* 'dmacro-exec) (autoload 'dmacro-exec "dmacro" nil t) ; C-x C-fでのファイル補完の挙動をzshぽくする ; http://d.hatena.ne.jp/mooz/20101003/p1 ; ディレクトリのところでリターンを押した時の挙動をカスタマイズ ; したいと思っているがまだ出来てない (require 'zlc) (let ((map minibuffer-local-map)) ;;; like menu select (define-key map (kbd "<down>") 'zlc-select-next-vertical) (define-key map (kbd "<up>") 'zlc-select-previous-vertical) (define-key map (kbd "<right>") 'zlc-select-next) (define-key map (kbd "<left>") 'zlc-select-previous) (define-key map (kbd "C-c") 'zlc-reset) ) ; physical-line modeを有効にする。 (require 'physical-line) (add-hook 'find-file-hooks 'physical-line-mode) (setq physical-line-ignoring-mode-list '(dired-mode)) ; auto-complete modeを有効にする (when (require 'auto-complete nil t) (global-auto-complete-mode t) (setq ac-dwim nil) (set-face-background 'ac-selection-face "steelblue") (set-face-background 'ac-menu-face "skyblue") (define-key ac-complete-mode-map "\t" 'ac-expand) (define-key ac-complete-mode-map "\r" 'ac-complete) (setq ac-auto-start t) (setq ac-sources '(ac-source-abbrev ac-source-words-in-buffer)))
iswitchb-mode, transient-mark-mode, migemo.el, zlc.elあたりはもう必須で、ないと操作するのが非常に辛い。あとはauto-complete.elとdmacro.elぐらいがあれば生きていける。iswitchb-modeは一般にあまり便利だとあまり宣伝されていない気がするのだが、複数バッファを開いた時の表示バッファの切り替えという、非常にクリティカルな操作をおそろしく高速化してくれるので、知らないでemacsを使うのは無謀だというぐらいに便利なので、詳しく説明をしておく。以下、社内ブログに2年前にぐらいに書いた記事から一部転載。
iswitchb-modeは複数ファイルを開いているときに、ファイル(より正確には、ファイルに対応するバッファ)間の移動を簡単に行うためのものです。新しめのemacsなら.emacsに1行書くだけで有効になります。
iswitchb-modeが有効になっていると、C-x bで、下のミニバッファにバッファ一覧が出てくるようになります。それだけだと別に大したことはないのですが、そこで開きたいバッファ名を適当に入力すると、対象バッファが絞り込まれていきます。開きたいバッファが一番左に来たらエンターで決定。あと、C-sとC-rでバッファ一覧をひとつずらすことができます。同名のファイル(例えばMakefileとか)がたくさんある場合は絞り込みだけではなんともならないので、絞り込んだ後はC-sとC-rで目当てのバッファを一番左に移動させます。
正直、これを覚えると、C-x C-bでバッファ一覧を出して移動するとか、メニューのBuffersからマウスでわざわざ選択するとか、めんどくさすぎてできなくなります。私も2年ぐらい前に知ったんですが、この機能を知ってから、ちょっとemacsをまじめに使いこなそうか、という気分になりました。