LoginSignup
0
1

More than 5 years have passed since last update.

tmuxでGNU screenのようにwindowの中身のpaneを入れ替える試み#1

Last updated at Posted at 2017-01-13

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から入れ変えようとすると問題が生じます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1