1. はじめに

1.1 tmuxとは

tmux(Terminal Multiplexer)は、1つのターミナル内で複数のターミナルセッションを管理できる強力なツールです。

セッション永続化

SSH接続が切れても作業を継続。リモート作業の必需品。

画面分割

1つの画面で複数のタスクを同時実行。効率的な作業環境を構築。

カスタマイズ性

キーバインドや外観を自由にカスタマイズ可能。

類似ツールとの比較:tmuxはGNU Screenの後継として開発され、より現代的な機能とアクティブな開発が特徴です。byobuはtmuxのラッパーとして便利な機能を提供します。

1.2 インストール

各OSでのインストール方法を紹介します。

macOS

brew install tmux

Ubuntu/Debian

sudo apt-get update
sudo apt-get install tmux

CentOS/RHEL

sudo yum install tmux

ソースからビルド

git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make
sudo make install
インストール後は tmux -V でバージョンを確認できます。

1.3 基本概念

tmuxの階層構造を理解することが、効率的な使用の第一歩です。

階層構造

セッション → ウィンドウ → ペイン
要素 説明 類似概念
セッション 独立した作業環境全体 デスクトップのワークスペース
ウィンドウ セッション内のタブ ブラウザのタブ
ペイン ウィンドウ内の分割画面 エディタの分割ビュー

2. クイックスタート

2.1 最初の5つのコマンド

コマンド 説明
tmux 新規セッション開始
tmux ls セッション一覧表示
tmux attach -t [名前] セッションに接続
Ctrl-b d セッションから離脱(デタッチ)
Ctrl-b ? ヘルプ表示

2.2 基本的なワークフロー例

# 1. 新規プロジェクト用セッション作成
tmux new -s myproject

# 2. 作業(ウィンドウやペインを作成)
# Ctrl-b c で新規ウィンドウ
# Ctrl-b % で垂直分割

# 3. セッションから離脱
# Ctrl-b d

# 4. 後で再接続
tmux attach -t myproject
プレフィックスキー(Ctrl-b)はすべてのtmuxコマンドの起点です。まずはこれを覚えましょう!

3. セッション管理

3.1 セッション操作

作成

tmux new -s [セッション名]       # 新規セッション作成
tmux new -s work -d              # デタッチ状態で作成
tmux new -s dev -c ~/projects   # 特定ディレクトリで開始

一覧・接続

tmux ls                          # セッション一覧
tmux list-sessions               # 詳細表示
tmux attach -t [セッション名]     # 指定セッションに接続
tmux a                           # 最後のセッションに接続

削除

tmux kill-session -t [セッション名]  # 指定セッション削除
tmux kill-server                    # 全セッション削除

3.2 セッション内操作

キーバインド 動作
Ctrl-b d デタッチ
Ctrl-b $ セッション名変更
Ctrl-b s セッション一覧と切り替え
Ctrl-b ( 前のセッション
Ctrl-b ) 次のセッション

4. ウィンドウ管理

4.1 ウィンドウ操作

キーバインド 動作
Ctrl-b c 新規ウィンドウ作成
Ctrl-b , ウィンドウ名変更
Ctrl-b & ウィンドウ削除(確認あり)
Ctrl-b w ウィンドウ一覧

4.2 ウィンドウ間の移動

キーバインド 動作
Ctrl-b [数字] 番号指定で移動
Ctrl-b n 次のウィンドウ
Ctrl-b p 前のウィンドウ
Ctrl-b l 最後に使用したウィンドウ
ウィンドウ番号は画面下部のステータスバーに表示されます。頻繁に使うウィンドウには分かりやすい名前を付けましょう。

5. ペイン管理

5.1 ペイン分割

垂直分割(左右)

Ctrl-b %

画面を縦に分割して左右のペインを作成

水平分割(上下)

Ctrl-b "

画面を横に分割して上下のペインを作成

5.2 ペイン操作

キーバインド 動作
Ctrl-b o ペイン間を順番に移動
Ctrl-b 矢印 方向指定で移動
Ctrl-b q ペイン番号表示
Ctrl-b x ペインを閉じる
Ctrl-b z ペインを最大化/元に戻す
Ctrl-b ! ペインを新規ウィンドウに
Ctrl-b スペース レイアウト自動調整

5.3 ペインサイズ調整

Ctrl-b Ctrl-矢印    # サイズ調整(1文字単位)
Ctrl-b Alt-矢印     # サイズ調整(5文字単位)

6. コピーモード

6.1 基本操作

コピーモードでは、ターミナル内のテキストを選択してコピーできます。

Ctrl-b [        # コピーモード開始
q または Esc    # コピーモード終了

6.2 vi風キーバインド

キー 動作
hjkl カーソル移動
w, b 単語単位で移動
/, ? 検索(前方/後方)
n, N 次/前の検索結果
Space 選択開始
Enter コピー実行
Ctrl-b ] ペースト
コピーモードは履歴のスクロールにも使えます。過去の出力を確認したい時に便利です。

7. 設定ファイル(.tmux.conf)

7.1 基本設定例

設定ファイルは ~/.tmux.conf に配置します。

# ~/.tmux.conf

# プレフィックスキーを変更
set -g prefix C-a
unbind C-b

# 設定リロード
bind r source-file ~/.tmux.conf \; display "Config reloaded!"

# ペイン分割を直感的に
bind | split-window -h
bind - split-window -v

# マウス操作を有効化
set -g mouse on

# ウィンドウ番号を1から開始
set -g base-index 1
setw -g pane-base-index 1

# 256色対応
set -g default-terminal "screen-256color"

7.2 便利な設定集

# ステータスバーのカスタマイズ
set -g status-bg black
set -g status-fg white
set -g status-left '#[fg=green]#S '
set -g status-right '#[fg=yellow]#h %Y-%m-%d %H:%M'

# vimライクなペイン移動
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# ペインサイズ調整
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

# コピーモードの設定
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
設定変更後は tmux source-file ~/.tmux.conf または設定したリロードキーで反映させてください。

8. 実践的な使用例

8.1 開発環境の構築

プロジェクト用の開発環境を自動構築するスクリプト例:

#!/bin/bash
# dev-session.sh

PROJECT_NAME="myapp"
PROJECT_DIR="~/projects/myapp"

# セッション作成
tmux new-session -d -s $PROJECT_NAME -c $PROJECT_DIR

# エディタウィンドウ
tmux rename-window -t $PROJECT_NAME:0 'editor'
tmux send-keys -t $PROJECT_NAME:0 'vim .' Enter

# サーバーウィンドウ
tmux new-window -t $PROJECT_NAME:1 -n 'server' -c $PROJECT_DIR
tmux send-keys -t $PROJECT_NAME:1 'npm run dev' Enter

# Gitウィンドウ
tmux new-window -t $PROJECT_NAME:2 -n 'git' -c $PROJECT_DIR
tmux split-window -h -t $PROJECT_NAME:2
tmux send-keys -t $PROJECT_NAME:2.0 'git status' Enter
tmux send-keys -t $PROJECT_NAME:2.1 'git log --oneline -10' Enter

# ログウィンドウ
tmux new-window -t $PROJECT_NAME:3 -n 'logs' -c $PROJECT_DIR
tmux send-keys -t $PROJECT_NAME:3 'tail -f logs/app.log' Enter

# エディタウィンドウを選択して接続
tmux select-window -t $PROJECT_NAME:0
tmux attach-session -t $PROJECT_NAME

8.2 リモートペアプログラミング

# ホスト側
tmux new-session -s pair
chmod 777 /tmp/tmux-$(id -u)/default  # ソケット権限設定

# ゲスト側
ssh user@host
tmux attach -t pair

8.3 複数プロジェクトの管理

プロジェクトごとにセッションを作成して管理:

# フロントエンド開発用
tmux new -s frontend -c ~/projects/frontend

# バックエンド開発用
tmux new -s backend -c ~/projects/backend

# データベース管理用
tmux new -s database

# セッション一覧確認
tmux ls

# セッション間の素早い切り替え
# Ctrl-b s で選択
tmuxinatorやtmuxpなどのツールを使うと、より高度なセッション管理が可能になります。

9. トラブルシューティング

9.1 よくある問題と解決法

色が正しく表示されない

# ~/.bashrc または ~/.zshrc に追加
export TERM=screen-256color

# .tmux.conf に追加
set -g default-terminal "screen-256color"

マウススクロールが効かない

# .tmux.conf に追加
set -g mouse on

クリップボード連携

# macOS
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"

# Linux (xclip必要)
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"

# WSL2
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "clip.exe"

9.2 セッションの復旧

# ゾンビセッションの削除
tmux kill-session -t [セッション名]

# 全セッションのリセット
tmux kill-server

# プロセスが残っている場合
ps aux | grep tmux
kill -9 [PID]
tmux kill-server は全セッションを削除します。重要な作業中は使用を避けてください。

10. 便利なプラグイン

10.1 Tmux Plugin Manager (TPM)

プラグイン管理を簡単にするTPMのインストール:

# TPMのインストール
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

# .tmux.confに追加
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# 他のプラグイン
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'tmux-plugins/tmux-yank'

# TPMを初期化(最終行に記載)
run '~/.tmux/plugins/tpm/tpm'

10.2 おすすめプラグイン

tmux-resurrect

セッション永続化。システム再起動後も復元可能。

set -g @plugin 'tmux-plugins/tmux-resurrect'

tmux-continuum

自動保存・復元。resurrectの自動化。

set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'

tmux-yank

システムクリップボード連携を改善。

set -g @plugin 'tmux-plugins/tmux-yank'

tmux-pain-control

ペイン操作を直感的に。

set -g @plugin 'tmux-plugins/tmux-pain-control'
プラグインのインストール後は Ctrl-b I でプラグインを読み込みます。

11. キーバインド一覧表

11.1 デフォルトキーバインド早見表

カテゴリ キーバインド 説明
セッション Ctrl-b d セッションから離脱
Ctrl-b s セッション選択
Ctrl-b $ セッション名変更
Ctrl-b ( 前のセッション
Ctrl-b ) 次のセッション
ウィンドウ Ctrl-b c 新規ウィンドウ
Ctrl-b n 次のウィンドウ
Ctrl-b p 前のウィンドウ
Ctrl-b l 最後のウィンドウ
Ctrl-b w ウィンドウ一覧
Ctrl-b , ウィンドウ名変更
Ctrl-b & ウィンドウ削除
Ctrl-b [0-9] 番号指定で移動
ペイン Ctrl-b " 水平分割(上下)
Ctrl-b % 垂直分割(左右)
Ctrl-b 矢印 ペイン間移動
Ctrl-b o 次のペイン
Ctrl-b z ペイン最大化
Ctrl-b x ペイン削除
Ctrl-b ! ペインを新規ウィンドウに
Ctrl-b q ペイン番号表示
Ctrl-b スペース レイアウト切り替え
Ctrl-b { / } ペイン入れ替え

12. チートシート

12.1 必須コマンド10選

  1. tmux - セッション開始
  2. Ctrl-b d - デタッチ
  3. tmux a - 再接続
  4. Ctrl-b c - 新規ウィンドウ
  5. Ctrl-b % - 垂直分割
  6. Ctrl-b " - 水平分割
  7. Ctrl-b 矢印 - ペイン移動
  8. Ctrl-b z - ペイン最大化
  9. Ctrl-b , - ウィンドウ名変更
  10. Ctrl-b ? - ヘルプ

12.2 作業効率化Tips

エイリアス設定例

# ~/.bashrc または ~/.zshrc に追加

# tmux関連のエイリアス
alias ta='tmux attach -t'
alias tls='tmux ls'
alias tn='tmux new -s'
alias tk='tmux kill-session -t'

# プロジェクト別セッション
alias tdev='tmux new -s dev || tmux attach -t dev'
alias twork='tmux new -s work || tmux attach -t work'

セッション自動作成スクリプト

#!/bin/bash
# ~/bin/tmux-work.sh

SESSION="work"

# セッションが存在しない場合のみ作成
tmux has-session -t $SESSION 2>/dev/null

if [ $? != 0 ]; then
    # セッション作成と設定
    tmux new-session -d -s $SESSION
    
    # ウィンドウ作成
    tmux rename-window -t $SESSION:0 'main'
    tmux new-window -t $SESSION:1 -n 'server'
    tmux new-window -t $SESSION:2 -n 'logs'
    
    # 初期コマンド実行
    tmux send-keys -t $SESSION:0 'cd ~/projects' C-m
    tmux send-keys -t $SESSION:1 'npm run dev' C-m
    tmux send-keys -t $SESSION:2 'tail -f /var/log/app.log' C-m
fi

# セッションに接続
tmux attach -t $SESSION
定期的に使うセッション構成はスクリプト化しておくと、環境構築が格段に楽になります。

付録

A. 関連リソース

B. バージョン情報

tmuxのバージョンによって利用可能な機能が異なります:

  • tmux 3.0+: マウスサポートの改善、新しいフック機能
  • tmux 2.9+: スタイルオプションの統一
  • tmux 2.4+: コピーモードのキーバインド変更
  • tmux 2.1+: マウスサポートの統一(set -g mouse on)
# バージョン確認
tmux -V

C. 用語集

用語 説明
アタッチ(Attach) 既存のセッションに接続すること
デタッチ(Detach) セッションから離脱すること(セッションは継続)
プレフィックスキー tmuxコマンドの起点となるキー(デフォルト: Ctrl-b)
ステータスバー 画面下部の情報表示領域
ソケット tmuxサーバーとクライアント間の通信経路