Nested tmux向け.tmux.conf
Remote Server に 作業用のtmuxを常駐している.
僕の環境では,
自宅PC -> Remote server -> 各種サーバ
とつなげることが多く, Remote serverにtmuxを常駐させることによって 作業状態を保存して置けるのが, かなり嬉しいのでtmuxをネストして使うことが多い.
しかしながら ネストしたtmuxでのprefixの使い分けが 苛ついてて仕方ないので, ネストしたtmuxをシームレスに使える設定を考案.
以下に述べようと思う.
Nested tmux向け設定
まずtmux では以下の設定でC-qにprefixを付け替えられる.
set-option -g prefix C-q
ネストしたtmuxでは, 以下の様に設定してやれば C-s がネストしたtmuxのprefixになる.
bind -n C-s send-prefix
しかしながら prefixの使い分けは, 非常にややこしく操作ミスも大きいくせに リスクが大きい.
よくあるのが, 中のtmuxのpaneを昨除しようと思ったら, 外側のtmuxのペインを削除し, tmuxごと消えてしまうということ, またその逆も然りである.
従ってネストした時には, 今のprefixが ネストしたtmuxのprefixであると直感的操作ミスも少なくなるだろう.
ということで, Nested tmux 向けに以下のように設定を行うことで解決. 僕はCtrl+矢印でウィンドウの移動を行っているので, その移動の際にsshのチェックを行うだけである
bind -n C-q send-key C-q bind -n C-Left run-shell 'tmux previous-window; \ tmux if-shell "$is_ssh" " \ set-option -q prefix C-s " " \ set-option -q prefix C-q "' bind -n C-Right run-shell 'tmux next-window; \ tmux if-shell "$is_ssh" " \ set-option -q prefix C-s" "\ set-option -q prefix C-q; unbind C-s"'
以上の設定はtmux1.8のみで動作を確認している