読者です 読者をやめる 読者になる 読者になる

分割されたwindowのサイズ調整をsmartrepで行うTIPS

最近はディスプレイの解像度が上がり,Emacsを使用する際はwindowを分割する人も多いだろう.
分割されたwindowの大きさを調整する場合,windowの境界部分をドラッグすることで
調整することも可能だが,コマンドによっても可能である.
それらは:

コマンド名 説明 キーバインド
enlarge-window-horizontally 水平に分割したwindowの幅を少し広げる. C-x }
shrink-window-horizontally 水平に分割したwindowの幅を少し狭める. C-x {
enlarge-window windowの高さ/幅を少し広げる/狭める. C-x ^
shrink-window windowの高さ/幅を少し広げる/狭める. なし
balance-window 調整したwindowの分割幅をリセットする C-x +

ただしサイズ調整の基準となるwindowはカーソルが置かれているwindowが対象である.

enlarge-windowコマンドの形式は,以下のように書かれる.

(enlarge-window DELTA &optional HORIZONTAL)

DELTAが実際に大きくする幅(行数/列数)を指定する.デフォルト値は1.
負の値を指定すれば小さくするということを意味する.
HORIZONTALはwindowを大きくする方向を指定する.
HORIZONTALがtならば水平方向, nilならば垂直方向である.
デフォルトではnilとして扱われ,省略可能である.省略された場合もnilとして扱われる.
shrink-windowはenlarge-windowのDELTAが正負反転して扱われる以外,仕様は同様である.
上記コマンド群はC-uで引数を与えて呼び出すことで,DELTAの値を指定することが可能である.
(例えばC-u 5 C-x }C-u 2 C-x ^

さて,上記コマンドはキーバインド的にいささか押しづらく,
繰り返し呼び出してサイズを微調整する,ということがやりにくい.
そこで@myuhe氏のsmartrepを使って以下のように設定を書いてみた.

(smartrep-define-key global-map "C-c"
  '(("{"  . 'shrink-window-horizontally)
    ("}"  . 'enlarge-window-horizontally)
    ("+"  . 'balance-windows)
    ("^"  . 'enlarge-window)
    ("%"  . (enlarge-window -1))))

上記の例ではC-cに続けて {} を押下して調整する.
C-uでwindowの大体の大きさを指定してコマンドを実行し,上記smartrepで微調整,
というのが使用例であろうか.
直接smartrepで連打してサイズ調整もOKだろう.
キーバインドは各自が適切に変更されたい.