個人的に便利なemacsの設定まとめ

一般的な設定

;; 変更のあったファイルの自動再読み込み
(global-auto-revert-mode 1)

;; スタートアップメッセージを非表示
(setq inhibit-startup-screen t)
;; Emacsからの質問をy/nで回答する
(fset 'yes-or-no-p 'y-or-n-p)

;; バックアップファイルを作らない
(setq make-backup-files nil)
;; オートセーブファイルを作らない
(setq auto-save-default nil)

;; タイトルバーにファイルのフルパスを表示
(setq frame-title-format "%f")

;; 起動時のサイズ,表示位置を指定
(setq initial-frame-alist
      (append (list
	       '(width . 145)
	       '(height . 125)
	       '(top . 0)
	       '(left . 0)
	       )
	      initial-frame-alist))
(setq default-frame-alist initial-frame-alist)

参考:
emacs基本設定 - emacs設定の覚え書き書き

行番号の表示

;; 行番号を表示
(require 'linum)
(setq linum-format
      '(lambda (line)
        (let *1
                         "d"))))
          (propertize (format fmt line) 'face 'linum))))
(global-linum-mode)

行番号は最初と最後の1行ずつだけで表示できるようになるが,「最低幅を確保した上で,常に右寄せで行番号を表示させ」るための設定.
(min-w 6)の数字を変更すると最低幅が変わる.

参考:
[Emacs] linum.el で左側に行番号を表示する - @kei10in の日記

optionキーに割り当てられている機能を無効にする

これはあまり需要がないかもしれないが,例えば日本語パンクチュエーションを「,」「.」に設定していて,たまに「、」「。」が打ちたいときがあるとする.あるいはバックスラッシュと円マークは,どちらかがデフォルトになっているとき,optionで他方に切り替えるようになっていることがある.

ひとつめの方法は,キーバインドを新設してしまうというもの.

;; option + ./,の定義
(define-key global-map (kbd "M-,") "、")
(define-key global-map (kbd "M-.") "。")

これでも実用上さして不便はないが,ひとつひとつ設定しないといけない.
もし英語以外のヨーロッパ言語を打つ必要がある場合,optionが生きていないとかなり不便なはずだ.
そこで以下,スタックオーバーフローで教えてもらった方法.

;; optionキーのemacs上の機能を無効化
(setq ns-alternate-modifier 'none)

参考:
macos - emacs上で,ことえりから「.」と「。」を切り替えて入力する方法 - スタック・オーバーフロー

バッファ間のカーソル移動のキーバインド変更

これも需要がなさそうな設定だが,ことえりで日本語入力モードになっていると,C-x oのようにcontrolを離してから押下するキーがきかない.
これがストレスだったのでcontrolを押しっぱなしにするバインドを追加した.

;; カーソルを次のバッファに移動するキーバインドをC-x C-oに設定
;; もとのキーバインドも有効
(define-key global-map (kbd "C-x C-o") 'other-window)

参考:
Emacs講座 -第5回- キーバインドの変更 / マスタカの ChangeLog メモ

カーソル移動系はほかにもいろいろ要望があるが,おいおい考える.

*1:fmt (let ((min-w 6) (w (length (number-to-string (count-lines (point-min) (point-max)))))) (concat "%" (number-to-string (if (< min-w w) w min-w