2014年2月19日水曜日

tmuxのためのソナチネ




サーバーとかで作業する時,つないだ先でたくさんターミナルを開きたい,切断しても継続して欲しいと思うことがあるかもしれません.

そんな需要に答えるのがscreentmuxなどのターミナルマルチプレクサです.screenとtmux,あまり大きな違いはないのですが,僕はtmuxを使ってるのでtmuxについて説明します.

tmuxの主な機能は以下です.
  • アタッチ,デタッチ
  • ウインドウ分割
  • ペイン分割
  • .tmux.confによる拡張

インストールと起動

インストールはHomebrewやMacPortsなどで簡単にできます. 起動は
tmux
でできます.起動すると下に緑のバーが出ます.

アタッチとデタッチ

まず,tmuxを起動して ls と入力してファイル一覧を出した後にターミナルアプリ(iTermなど)を閉じてもう一度アプリを起動してみましょう.そして
tmux a
と入力します.すると,なんということでしょう,さっき ls した後の画面がtmux上でそのまま残っています.これがアタッチです. つまり,tmux上で作業中にiTermが落ちた,あるいはサーバとの切断が切れた場合でも,作業プロセスは残っています.例えばシミュレーションだったらそのまま回ってます. そして再度iTermを起動 or サーバに接続して tmux a でアタッチすれば作業を再開できます.

デタッチはアタッチの逆で,tmux上のプロセスを継続したまま元の画面に戻ってくる時に使います.コマンドは
C-b d
です.デタッチしてアタッチするとまたtmuxに戻ってこれます.

tmuxを開いてデタッチしてアタッチせずにtmuxをまた起動してを繰り返すと無限にtmuxのプロセスが作れます.このひとつひとつのプロセスのことをセッションといいます.セッションの一覧は
tmux ls
で出せます.各セッションには番号がついてて
tmux a -t 番号
で所望のセッションにアタッチ可能で,
tmux kill-session -t 番号
で所望のセッションを殺せます.
tmux new -s 名前
でセッションを起動することで番号ではなく名前で区別することもできます.

ウインドウ分割

ひとつのセッションに複数のウインドウと呼ばれる単位を作れます.新規ウインドウの作成コマンドは
C-b c
です. ウインドウの一覧は
C-b w
で出せて,
C-b 番号
で所望のウィンドウに移動できて,
C-b &
で今のウインドウを殺せます.
C-b p
C-b n
で前後のウインドウに移動することもできます.

ペイン分割

ウィンドウ内にさらにペインと呼ばれる分割画面を出すことができます. 縦分割は
C-b %
横分割は
C-b "
です.
C-b o
C-b Up
C-b Down
C-b Left
C-b Right
でペイン間の移動ができます

.tmux.confによる拡張

ホームフォルダに.tmux.confというのを作ってそこに設定を書いておくとtmuxの機能を拡張できます. ちなみに僕は下みたいに書いてます..
bind r source-file ~/.tmux.conf\; display-message "Reload Config!!"

# UTF-8
set-option -g status-utf8 on

# 同時入力
bind a set-window-option synchronize-panes on
bind z set-window-option synchronize-panes off

# マウス機能
set -g mode-mouse on
set-window-option -g mouse-select-pane on
これを書くと
C-b r
で.tmux.confをリロード,
C-b a
で全部のペインに同時入力,
C-b z
で同時入力解除できます.あとマウスでペインを選べるようにしてます.

他にも便利に拡張できると思うのでいろいろやってみてください!

2 件のコメント :