いままでノートPCで開発をしていた時は画面も小さかったのであまりバッファは分割していませんでした。最近広いモニタにしてバッファを分割することが多くなり、分割バッファの幅を変えるのにC-x {
やC-x }
でやっており結構面倒でした。
ネットで調べていいのがあったのでその設定をメモしておきます。
設定ファイルに下記を追加します。
(defun window-resizer ()
"Control window size and position."
(interactive)
(let ((window-obj (selected-window))
(current-width (window-width))
(current-height (window-height))
(dx (if (= (nth 0 (window-edges)) 0) 1
-1))
(dy (if (= (nth 1 (window-edges)) 0) 1
-1))
action c)
(catch 'end-flag
(while t
(setq action
(read-key-sequence-vector (format "size[%dx%d]"
(window-width)
(window-height))))
(setq c (aref action 0))
(cond ((= c ?l)
(enlarge-window-horizontally dx))
((= c ?h)
(shrink-window-horizontally dx))
((= c ?j)
(enlarge-window dy))
((= c ?k)
(shrink-window dy))
;; otherwise
(t
(let ((last-command-char (aref action 0))
(command (key-binding action)))
(when command
(call-interactively command)))
(message "Quit")
(throw 'end-flag t)))))))
(global-set-key "\C-c\C-r" 'window-resizer)
これで、Emacsを再起動し、分割されたバッファでC-c C-r
をして、h
を押すと境界線が左に、j
を押すと下に、k
を押すと上に、l
を押すと右に移動します。
これは直感的でわかりやすいです。
参考URL
http://d.hatena.ne.jp/mooz/20100119/p1
http://d.hatena.ne.jp/khiker/20100119/window_resize