Terminal: はじめての tmux

Terminal を画面分割したり、マルチセッションにできる。とにかくすごい。

ログを表示しながら横でテスト通信走らせてログの挙動を見たり、
通信が切れて ssh が broken pipe してしまってもサーバー上の処理は残したままにできたり。

なのでバックグラウンドでデーモン走らせず
tmux のセッションでウェブサーバーをフロント起動しておいて
サービス運営している人とかも見たことある。(メンテの時にドキドキしそう)

 

インストール

OS X

$ brew install tmux

Cent OS (EPEL とか)

$ yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/tmux-1.6-3.el6.x86_64.rpm

 

tmux を開始してセッションを新規作成

$ tmux

tmux コマンドで非 tmux 状態から開始。tmux 中にさらに tmux を実行してネストすることはできません。

セッションを抜ける(デタッチ)=セッションは残る

control+b → d

control+b した後、手をキーボードから離して、d。
この control+b はデフォルトのバインドキーで、変えることもできる。

tmux を再起動しつつ、直近のセッションに入る(アタッチ)

$ tmux attach

または

$ tmux a

起動していたセッション番号を指定してアタッチ

$ tmux a -t セッション番号

セッション一覧表示

$ tmux ls

セッションに接続している接続元一覧

$ tmux lsc

 

tmux の画面分割・マルチセッションの概念

Session:画面左下に [1] とか [2] とか書かれている。セッション間の移動はデタッチ→アタッチ。
┗Window:画面のこと。0:bash* 1:bash とか書かれてる。* が付いている奴が選択中。
 ┗Pane:画面を分割してできた領域。ペイン。

基本的にはプロジェクト単位とかサービス単位でセッションがあって、
ログ見つつ作業するウィンドウ+完全に作業なウィンドウ+ブログ書くウィンドウ
とかになったりするんじゃなかろうか。

 

Window を追加

control+b → c

create の略かしら

Window を移動

control+b → n または p

next / previous の略かしら

Windows を閉じる

$ exit

Window に名前をつける

control+b → ,

Window を一覧表示

control+b → w

 

画面を左右分割 (Pane を追加)

control+b → shift+5 (%)

上下分割 (Pane を追加)

control+b → shift+' (")

Pane を移動

control+b → o

または

control+b → 方向キー

Pane を分割終了

control b → !

 

セッション名をつけてセッションを作成

$ tmux new -s セッション名

セッション名の変更

$ tmux rename -t 0 hoge

セッションを削除:直近のセッションを削除

$ tmux kill-session

セッションを削除:指定して削除

$ tmux kill-session -t セッション名

セッションを削除:全削除

$ tmux kill-server

 

コマンドヘルプ

control+b → ?

 

~/.tmux.conf を作成して tmux をカスタマイズ

$ vi ~/.tmux.conf

コンフィグファイルを反映

$ tmux source-file ~/.tmux.conf

.tmux.conf 例

# バインドキーを control b から control t に変更
unbind C-b
set -g prefix C-t
bind C-t send-prefix

# 日本語対応
setw -g utf8 on
set -g status-utf8 on

# バインドキーを vi 風に
set-window-option -g mode-keys vi

# 256 色対応
set -g default-terminal "xterm-256color"
set -g terminal-overrides "term:colors=256"
set -g display-time 2000

# 異なるサイズの端末からアクセスした時にリサイズ
setw -g aggressive-resize on

# マウススクロール反映
set-window-option -g mode-mouse on