tmux で一時的に pane を最大化する

Vim には,分割しているウィンドウのうちカーソルが居るカレントウィンドウを除いて他を閉じる :only というコマンドがあります.それを拡張して,一時的にカレントウィンドウを最大化し,最大化前に戻せる ZoomWin というプラグインがあり,愛用しています.因みに Emacs にもemacs-zoom-window が最近出来たようです.

僕は最近ローカルでも tmux を真面目に使いはじめたので,tmux でも pane を最大化したり元に戻したりしたくなりました.そんなわけで早速設定しました.

最新の tmux (1.8) のみしか使わない場合

最新の tmux (1.8) では resize-pane-Z オプションを指定でき,これがそのままやりたい機能を提供してくれます.デフォルトでは {プレフィクス} z に割り当てられており,カーソルが居る pane の最大化↔最大化解除 をトグルすることが出来ます. 最新の tmux しか使わない人はこれを使えば良いです.

tmux 1.7 を使う場合

Ubuntu 12.04 で tmux 1.8 がどうもうまく動かなかったので,Ubuntu では tmux 1.7 を使っているのですが,1.7 でも pane の最大化をやりたかったので,tmux-zoom-window をつくりました.

  1. tmux-zoom-window から clone してきた zoomwin.sh~/.tmux に入れる(場所はどこでも良いです)

  2. .tmux.conf にキー設定

bind-key    z   run "/bin/bash -c 'if [ -f $HOME/.tmux/zoomwin.sh ]; then bash ~/.tmux/zoomwin.sh; fi'"

zoomwin.sh は tmux のバージョンを見て適宜処理を切り替えるので,tmux のバージョンごとに .tmux.conf を書き換える必要は無く,すべて上記の設定で正しく動作します.tmux は Vim と違って pane を非表示にすることが出来ないため,最大化したい pane だけを一時的に別ウィンドウに取り出し,後で元のウィンドウに戻すようにしています.

ともあれ,これで 1.7 以前でも一時的に pane を広げて作業できるようになって色々やりやすくなりました.