GNU screenのwindowは本物のwindow(窓)で、中身を入れ替えられるのですが、tmuxのwindowはwindowというよりはpaneを貼り付ける掲示板のようなもので、画面1と2を並べて、その後画面1と3を並べたい、というような使い方をするのが難しいです。link-windowのような、link-paneがあると良いのですけどね。
ということで、swap-paneを使って強引にGNU screenのようにpaneの中身を入れ替えて使う事を試みてみました。以下のようなkey bindを用います。
.tmux.conf
bind u \
run-shell "tmux swap-pane -t :`tmux showenv TM_#{pane_id}|sed s/[^=]*=//`" \;\
command-prompt -p window: 'run-shell "tmux setenv TM_#{pane_id} '%%'"; \
run-shell "tmux swap-pane -t :`tmux showenv TM_#{pane_id}|sed s/[^=]*=//`"'
<prefix> u
と打つと、 window:
というプロンプトが出るので、
自分以外のwindow番号もしくは <#window>.<#pane> のような形式でもってきたいpaneを指定します。そうすると現在のpaneと指定のpaneが入れ替わり、
入れ替えた先のpane識別子が TM_#{pane_id}
環境変数に保存されます。
さらに他のpaneと入れ変えようとすると、直前の入れ替えをもとに戻してから入れ替えを行います。
GNU screen の <prefix>+number
に近い挙動になっているかなと思いますが、制限として、同じpaneを別々のpaneから入れ変えようとすると問題が生じます。