$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

tmuxのselect-layout -Eでペイン分割を常に等分にする

tmuxでペイン分割を繰り返すと、1/2、1/4、1/4のように不均等な分割になってしまう。3分割や4分割を等分でシュッとやりたいなと思い調べたところ、select-layout -Eが超便利だったのでメモしておく。

.tmux.confの設定

自分は元々emacs風のキーバインドでprefix + 2で上下分割、prefix + 3で左右分割を設定していたが、そこにselect-layout -Eを足すだけで等分リサイズされるようになった。さらにペイン終了時にも等分リサイズされるようにhookを設定した。

# 上下分割 + 等分リサイズ
bind 2 split-window -vc "#{pane_current_path}" \; select-layout -E
# 左右分割 + 等分リサイズ
bind 3 split-window -hc "#{pane_current_path}" \; select-layout -E
# ペイン終了時にも等分リサイズ
set-hook -g pane-exited 'select-layout -E'

これだけで、prefix + 3をすればs左右に自然に等分で分割が増えていくし、prefix + 2なら上下に等分で増えていく。ペインを閉じた時も自動で等分にリサイズされる。

select-layout -Eとは

ポイントはselect-layout -Eの影響範囲だ。tmuxにはレイアウトを均等にする機能としてselect-layout even-horizontalのようなものもあるが、これはウィンドウ全体のペインを並べ替えてしまう。

一方select-layout -Eは、現在のペインが属する分割グループの兄弟ペインだけを均等にする。そのためネストした分割構造を壊さずに、その階層のペインだけを等分にできる。例えば左右3分割の中の1つを上下分割しているような場合でも、上下分割の等分リサイズが他の左右分割に影響しない。