tmuxのjoin-paneからpaneの指定方法を学ぶ (ターミナルマルチプレクサ Advent Calendar 2日目)

ターミナルマルチプレクサ Advent Calendarの2日目です。
1日目は id:tmatsuu さんの ターミナルマルチプレクサ Advent Calendar始めました&インストールでした。

今日はtmuxのjoin-paneというpaneに関するコマンドについて説明します。
これはバージョン1.2から加わったコマンドでとりあえず覚えといた方がよさげです。
これは

  • 「今いるpane」を「他のwindowのpane」にもって行ったり
  • 「他のwindowのpane」を「今いるpane」にもって来たり

するものです。今後「今いる」を「activeな」という言葉に置き換えます。

下記のコマンドを試せば便利さが実感できると思います。

:join-pane -t :動かしたい先のwindowの番号 (activeなpaneがwindowの番号のwindowに加わる)
:join-pane -s :もって来たいpaneがあるwindowの番号 (windowの番号のpaneがactiveなpaneに加わる)

オプションが他にもありますが、基本これだけ覚えておけば十分なことがほとんどです。


先程の2番目のコマンドで
「指定した番号のwindowに複数のpaneがある場合にはどのpaneが今いるwindowに加わるのか?」
なんですが、これはかつてそのwindowでactiveだったものが加わります。
そもそも「-sオプションの対象の windowの番号に複数のpaneがある場合ってあまりない」と思うんですが、
activeでなかったpaneも -s オプションの対象に指定できます。
それをやるには

:join-pane -s :持ってきたいpaneがあるwindowの番号.pane番号

となります。
.(dot)の後にpaneの番号を書きます(list-panesコマンドで見れます)
しかしここまで指定したいことがないのでまず

:join-pane -s :2

みたいなので十分です。
tオプションの場合も:window番号の後に.(dot)を付けて番号を書くとjoinさせる先のpaneまで指定できます。


さらに言うと:window番号の前にsession番号をつけると違うsessionからpaneを持ってくることもできるようです。(使っている人いるんでしょうか。)
つまりtmuxの概念には session - window - pane の順の階層性がありpaneの指定方法は

session番号:window番号.pane番号

となっていて「session番号とpane番号は省略することが多いけど、activeなものという指定が暗黙の内にされている」ということになります。
manだとCOMMANDS説の直後あたりに書いてます。

アディオス