試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

端末の中で仮想端末を管理するtmux(GNU screenの代替)について(ペイン分割とその管理)

本記事は「端末の中で仮想端末を管理する tmux(GNU screenの代替)について(コピペとバッファに関する操作・バッファ数上限と後方スクロール行数の変更)」に続く内容となる。
GNU screenにもウィンドウを分割する機能があるが、tmuxの分割機能は上下/左右のどちらにも分割できる他、切り替えにマウスが使えるように設定できるなど、機能が強化されている。この分割されたそれぞれの領域はペインと呼ばれる。
ウィンドウのペイン分割はX Window System上の端末エミュレータを用いていればそれほど必要性はないが、GUIなしでリモート接続したりする*1場合などには重宝するかもしれない。
ここでは、ペイン分割とその管理を行う操作を扱う。
注意:本記事内で記述している操作は既定の割り当てで、設定ファイルにより変更することができる。

  1. 分割
  2. レイアウトの動的変更
  3. ペインの削除
  4. ペインサイズの変更
  5. アクティブなペインの切り替え

分割

Prefix-"(内部コマンドsplit-window)で現在アクティブなウィンドウを上下に、Prefix-%(内部コマンドsplit-window -h)では左右に分割する。
分割されたペインを更に分割することもできる。

レイアウトの動的変更

ペインの分割後にPrefix-SPACE(内部コマンドnext-layout)を押すことで、分割のレイアウトを順に変更できる。

  1. even-horizontal: 左右分割/等間隔*2
  2. even-vertical: 上下分割/等間隔
  3. main-horizontal: 左右分割/広いペインと狭いペイン*3
  4. main-vertical: 上下分割/広いペインと狭いペイン

これらは順に

  1. Prefix-Meta*4+1(内部コマンドselect-layout even-horizontal)
  2. Prefix-Meta+2(内部コマンドselect-layout even-vertical)
  3. Prefix-Meta+3(内部コマンドselect-layout main-horizontal)
  4. Prefix-Meta+4(内部コマンドselect-layout main-vertical)

でそれぞれ一発切り替えすることもできる。

ペインの削除

Prefix-x(内部コマンドconfirm-before kill-pane)で確認(ynを押す)後に現在アクティブなペインを閉じる。
Prefix-!(内部コマンドbreak-pane)で現在アクティブでないペインを新しいウィンドウに移し、現在のウィンドウを現在アクティブなペインのみにする。
参考として、Prefix-&(内部コマンドconfirm-before kill-window)では、確認後にアクティブなウィンドウ(分割されている場合は全ペイン)を閉じることができる。

ペインサイズの変更

上下分割時にはPrefix-Ctrl+(内部コマンドresize-pane -U)/Prefix-Ctrl+(内部コマンドresize-pane -D)、左右分割時にはPrefix-Ctrl+(内部コマンドresize-pane -L)/Prefix-Ctrl+(内部コマンドresize-pane -R)でペインのサイズ(区切り線の位置)を1ずつ調整できる。
上下分割時にPrefix-Meta+(内部コマンドresize-pane -U 5)/Prefix-Meta+(内部コマンドresize-pane -D 5)、左右分割時にPrefix-Meta+(内部コマンドresize-pane -L 5)/Prefix-Meta+(内部コマンドresize-pane -R 5)で5ずつ調整できる。

アクティブなペインの切り替え

アクティブなペインはPrefix-(内部コマンドup-pane)とPrefix-(内部コマンドdown-pane)で切り替えできる。
これに加え、以下の設定により、ペイン分割時にマウスクリックでアクティブなペインが切り替え可能になる。
ファイル名: ~/.tmux.conf

## マウスクリックでペイン選択
set-option -g mouse-select-pane on

このとき、マウスのドラッグで範囲選択はそのままではできなくなるが、Shiftキーを押しながらのドラッグで選択できる。

使用したバージョン:

  • tmux 1.1

*1:tmuxと関係はないが、リモート側が「SSHでシェルに入ることができる」ように設定しているとセキュリティレベルは下がるようで、シェルが必要なければ使えないようにしたほうが好ましいとされている

*2:「even」とあるように均等に分割する

*3:広い「main」のペインと狭いsubのペインに分割する

*4:Altキー