とほほのtmux入門

目次

tmuxとは

インストール

Shell
// CentOS 7
# yum install -y tmux

// Ubuntu
# sudo apt install tmux

ただし、yum でインストールされるのは 1.8 という古いバージョンなので、最新版(2.9)をインストールするには次のようにします。

Shell
# curl -kLO https://github.com/tmux/tmux/releases/download/2.9/tmux-2.9.tar.gz
# yum -y install gcc libevent-devel ncurses-devel
# tar -zxvf tmux-2.9.tar.gz
# cd tmux-2.9
# ./configure
# make
# make install

セッション操作

ひとつのターミナルから複数のセッションを作成することができます。ターミナルを閉じてもセッションは維持されます。セッション実行中は画面の下部に緑のステータスバーが表示されます。

コマンド説明
tmuxセッションを起動
tmux new -s 名前名前付きセッションを起動
exitセッションを終了
Ctrl-b dセッションを一時的に中断してメインに戻る (Detach)
tmux a中断していたセッションに戻る (Attach)
tmux a -t 名前中断していた名前付きセッションに戻る
Ctrl-b sセッションの一覧を表示
tmux list-sessionsセッションの一覧を表示
tmux kill-session -t 名前指定したセッションを終了

ウィンドウ操作

ひとつのセッションの中で複数のウィンドウを作成し、切り替えながら作業することができます。ウィンドウの一覧は画面下部のステータスバーに 「数字:ウィンドウ名」で表示されます。

コマンド説明
Ctrl-b c新規ウィンドウを作成 (Create)
Ctrl-b 数字数字で指定したウィンドウに移動
Ctrl-b n次のウィンドウに移動 (Next)
Ctrl-b p前のウィンドウに移動 (Prev)
Ctrl-b l以前のウィンドウに移動 (Last)
Ctrl-b wウィンドウの一覧を表示 (Window)
Ctrl-b ,ウィンドウ名を変更
Ctrl-b 'ウィンドウ番号を指定して移動
Ctrl-b .ウィンドウ番号を変更
Ctrl-b &ウィンドウ名を終了 (確認付き)
exitウィンドウを終了

ペイン操作

ひとつのウィンドウをさらに上下左右のペインに分割して操作することができます。

コマンド説明
Ctrl-b "上下にペインを分割
Ctrl-b %左右にペインを分割
Ctrl-b 矢印ペインを移動
Ctrl-b o次のペインに移動
Ctrl-b ;以前のペインに移動
Ctrl-b qペイン番号を表示
Ctrl-b {ペイン順序を前方向に入れ替え
Ctrl-b }ペイン順序を後方向に入れ替え
Ctrl-b zペインを最大化・復帰
Ctrl-b SPACEペインのレイアウトを変更
Ctrl-b tペインに時計を表示 (q で終了)
Ctrl-b !ペインをウィンドウ化
Ctrl-b xペインを終了(確認有り)
exitペインを終了

コピー操作

コピーモードを使用して画面上の文字をコピー・ペーストすることができます。デフォルトは Emacs 風のキーバインドですが、~/.tmux.conf に set-window-option -g mode-keys vi を追記して vi モードで使用するのがお勧めです。コピーモード中は画面の右上に選択文字数が黄色く表示されます。

コマンド説明
Ctrl-b [コピーモードを開始する
hカーソルを左に移動する
jカーソルを下に移動する
kカーソルを上に移動する
lカーソルを右に移動する
SPACEコピー選択を開始する
ENTERコピー選択を終了してコピーバッファに格納し、コピーモードを終了する
Ctrl-b ]コピーした内容を貼り付ける
v矩形モードを切り替える
qコピーモードを途中で終了する
Ctrl-uスクロールアップ
Ctrl-dスクロールダウン
Ctrl-bページアップ
Ctrl-fページダウン

その他の操作

コマンド説明
Ctrl-b ?キーバインドの一覧を表示 (q で戻る)
Ctrl-b :コマンド入力モード (list-windowsなど)

カスタマイズ

~/.tmux.conf ファイルで tmux の挙動をカスタマイズすることができます。

.tmux.conf
# Prefix(Ctrl-b)をCtrl-jに変更する
unbind-key C-b
set-option -g prefix C-j
bind-key C-j send-prefix

# ペインの開始番号を 0 から 1 に変更する
set-option -g base-index 1

# マウスでウィンドウ・ペインの切り替えやリサイズを可能にする
set-option -g mouse on                    # tmux 2.1以降
# set-option -g mode-mouse on               # tmux 2.0以前
# set-option -g mouse-select-window on      # tmux 2.0以前
# set-option -g mouse-select-pane on        # tmux 2.0以前
# set-option -g mouse-resize-pane on        # tmux 2.0以前

# マウスホイールでヒストリではなくスクロールできるようにする
set -g mouse on
set -g terminal-overrides 'xterm*:smcup@:rmcup@'

# ステータスバーの背景色を変更する
set-option -g status-bg "colour255"

# コピーモードのキー操作をviライクにする
set-window-option -g mode-keys vi

# コピーした際にWindowsのクリップボードにも転送する (yum install -y xsel)
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xsel -bi"

TeraTerm で tmux からのクリップボード書き込みを許可するには、TeraTerm の [設定]-[その他の設定]-[制御シーケンス] で [リモートからのクリップボードアクセス] を [読込/書込] にする必要があるようです。