1. はじめに
1.1 tmuxとは
tmux(Terminal Multiplexer)は、1つのターミナル内で複数のターミナルセッションを管理できる強力なツールです。
セッション永続化
SSH接続が切れても作業を継続。リモート作業の必需品。
画面分割
1つの画面で複数のタスクを同時実行。効率的な作業環境を構築。
カスタマイズ性
キーバインドや外観を自由にカスタマイズ可能。
                    類似ツールとの比較:tmuxはGNU Screenの後継として開発され、より現代的な機能とアクティブな開発が特徴です。byobuはtmuxのラッパーとして便利な機能を提供します。
                
            1.2 インストール
各OSでのインストール方法を紹介します。
macOS
brew install tmuxUbuntu/Debian
sudo apt-get update
sudo apt-get install tmuxCentOS/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_NAME8.2 リモートペアプログラミング
# ホスト側
tmux new-session -s pair
chmod 777 /tmp/tmux-$(id -u)/default  # ソケット権限設定
# ゲスト側
ssh user@host
tmux attach -t pair8.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選
- tmux - セッション開始
- Ctrl-b d - デタッチ
- tmux a - 再接続
- Ctrl-b c - 新規ウィンドウ
- Ctrl-b % - 垂直分割
- Ctrl-b " - 水平分割
- Ctrl-b 矢印 - ペイン移動
- Ctrl-b z - ペイン最大化
- Ctrl-b , - ウィンドウ名変更
- 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 -VC. 用語集
| 用語 | 説明 | 
|---|---|
| アタッチ(Attach) | 既存のセッションに接続すること | 
| デタッチ(Detach) | セッションから離脱すること(セッションは継続) | 
| プレフィックスキー | tmuxコマンドの起点となるキー(デフォルト: Ctrl-b) | 
| ステータスバー | 画面下部の情報表示領域 | 
| ソケット | tmuxサーバーとクライアント間の通信経路 |