画面を3等分する。
1920x1200の26インチのディスプレイに、emacsを全画面表示して使っていると、各ウィンドウの大きさは3等分くらいでちょうど良い。
Emacsテクニックバイブル*1、Emacs辞典*2、それからMeadow/Emacs memoを参考にして、
- ウィンドウをn等分する関数
- フレームが複数のウィンドウを持ってる時にはカーソルを隣のウィンドウに移し、そうでなければウィンドウを3等分する関数
を書いて、.emacs.d/init.el に追加した。
;;; 画面分割 (defun split-n (n) "現在のウィンドウをn等分する関数" (interactive "p") ; コマンドとして呼ぶときは前置引数を取る (if (= n 2) (progn (split-window-horizontally) (other-window 2)) (progn (split-window-horizontally (/ (window-width) n)) (other-window 1) (split-n (- n 1))))) (defun other-window-or-split () "windowがひとつのときは画面を3分割し、そうでなければとなりのwindowにカーソルを移す" (interactive) (if (one-window-p) (split-n 3)) (other-window 1)) (global-set-key (kbd "C-t") 'other-window-or-split) ;; C-t に割り当て ;;; 分割した画面間をShift+矢印で移動 (setq windmove-wrap-around t) (windmove-default-keybindings)
今回覚えたこと
- いくつかの関数をまとめて実行したいときは、prognでつなぐ
- 関数をコマンドとしても使いたい場合はinteractiveに変数の型を指定するコード文字を付けて呼ぶ