tmuxとは
tmux(ティーマックス)は、1つのターミナルの中で複数の作業画面を作り、管理するためのソフトウェアです。
分類としては「ターミナルマルチプレクサ」と呼ばれます。LinuxとmacOSで動作し、Windowsで使う場合はWSLなどのLinux環境が必要です。
主な機能は次の2つです。
- 画面を分割する — 1つの端末ウィンドウを左右・上下に分け、それぞれで別のコマンドを動かす
- 作業を保持する — 端末を閉じたりSSHが切れたりしても、tmuxの中のプロセスは動き続け、後から同じ画面に戻れる
ターミナルエミュレータとの違い
Windows Terminal、Ghostty、iTerm2などのターミナルエミュレータは、文字を画面に描画し、キー入力を受け取るアプリです。
tmuxはそのアプリの中で動くプログラムで、担当する層が違います。両者の関係は次の図のとおりです。
「WezTermとtmuxのどちらを使うか」という比較は成り立ちません。どのターミナルエミュレータを使っていても、その中でtmuxを起動できます。
ターミナル側にもタブやペイン分割がある場合は機能が重なりますが、tmuxにしかない強みは作業の保持です。ターミナル側のタブは、アプリを閉じると中のプロセスも終了します。tmuxのセッションは「tmuxサーバー」というバックグラウンドのプロセスが持っているため、アプリを閉じても残ります。

tmuxでできること
| やりたいこと | tmuxでの実現方法 |
|---|---|
| 1画面でエディタとサーバーのログを並べたい | ペイン分割 |
| プロジェクトごとに作業画面を分けたい | セッションを分ける |
| SSHが切れても処理を止めたくない | デタッチとアタッチ |
| 流れていった長い出力をさかのぼりたい | コピーモード |
| ターミナルを閉じても同じ配置に戻したい | セッションが残る(OS再起動後の復元はプラグインで対応) |
セッション・ウィンドウ・ペインの関係
tmuxの画面は3つの単位で構成されます。この関係を先に押さえておくと、キー操作も覚えやすくなります。
- セッション — 作業のまとまり。プロジェクトごとに1つ作るのが一般的
- ウィンドウ — セッションの中のタブに相当する。画面全体を切り替える
- ペイン — ウィンドウを分割した1区画。それぞれで別のシェルが動く
階層を図にすると次のようになります。
tmuxを起動すると、画面の最下部に緑色のバーが表示されます。
これは「ステータスライン」で、左端にセッション名、その右にウィンドウの一覧が並びます。今どのセッションのどのウィンドウにいるかは、ここで確認できます。
tmuxの基本的な使い方
プレフィックスキーの仕組み
tmuxのキー操作は、最初に「プレフィックスキー」を押し、続けて機能キーを押す2段階になっています。初期設定のプレフィックスは Ctrl+b です。たとえば Ctrl+b を押して指を離し、続けて % を押すと、画面が左右に分割されます。
以降は、この操作を「Ctrl+b → %」のように表記します。
セッションを作る・戻る・終了する
セッションの操作は、tmuxの外(普段のシェル)からコマンドで行うのが基本です。
tmux new -s work # 「work」という名前でセッションを作成して入る
tmux ls # セッションの一覧を表示
tmux attach -t work # 「work」に戻る(tmux a -t work でも可)
tmux kill-session -t work # 「work」を終了する
セッションから一時的に抜けるときは Ctrl+b → d を押します。これを「デタッチ」と呼び、抜けた後もセッションは裏で動き続けます。戻る操作が tmux attach で、こちらは「アタッチ」と呼びます。
ウィンドウとペインの操作
よく使うキー操作は次のとおりです。
| 操作 | キー |
|---|---|
| 新しいウィンドウを作る | Ctrl+b → c |
| 次・前のウィンドウへ移動 | Ctrl+b → n / p |
| 番号でウィンドウを選ぶ | Ctrl+b → 0〜9 |
| ウィンドウ名を変える | Ctrl+b → , |
| 左右に分割 | Ctrl+b → % |
| 上下に分割 | Ctrl+b → " |
| ペイン間を移動 | Ctrl+b → 矢印キー |
| ペインを一時的に最大化・元に戻す | Ctrl+b → z |
| ペインを閉じる | Ctrl+b → x |
| セッションとウィンドウを一覧から選ぶ | Ctrl+b → w |
| キー操作の一覧を表示 | Ctrl+b → ? |
ペインやウィンドウは、中のシェルで exit を実行しても閉じられます。最後のペインを閉じると、そのセッションも終了します。
デタッチとアタッチで作業を残す
tmuxが特に役立つのは、SSHで接続したリモートサーバーでの作業です。通常のSSH接続では、回線が切れるとサーバー側で動いていたプロセスも終了します。tmuxの中で動かしていれば、切断後も処理は続きます。その流れを図にすると次のとおりです。
再接続したら tmux attach -t セッション名 を実行すると、切断前と同じ画面に戻れます。ノートPCを閉じて移動するときや、通信が不安定な場所で作業するときに効果があります。
コピーモードで過去の出力をさかのぼる
tmuxの中では、ターミナルエミュレータのスクロールバーやマウスホイールが期待どおりに効かないことがあります。tmuxが自前で画面を管理しているためです。
過去の出力を見るときは Ctrl+b → [ で「コピーモード」に入り、矢印キーやPageUpで移動します。抜けるときは q です。後述の設定で mode-keys vi を指定すると、Vimと同じく / で検索できます。
.tmux.confの基本設定
tmuxの設定は、ホームディレクトリの ~/.tmux.conf に書きます。最初に入れておくと便利な設定は次のとおりです。
# マウスでペインの選択・サイズ変更・スクロールをできるようにする
set -g mouse on
# さかのぼれる行数を増やす(初期値は2000行)
set -g history-limit 50000
# ウィンドウとペインの番号を1から始める
set -g base-index 1
setw -g pane-base-index 1
# コピーモードの操作をVim風にする
setw -g mode-keys vi
# 分割したペインを、今いるディレクトリで開く
bind '"' split-window -v -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
# 256色を正しく扱う
set -g default-terminal "tmux-256color"
保存したら、tmuxの中で次のコマンドを実行すると反映されます。
tmux source-file ~/.tmux.conf
mouse on にすると、ドラッグでの文字選択もtmuxが受け取るようになります。ターミナルエミュレータ本来の選択でコピーしたいときは、Shiftキー(iTerm2ではOptionキー)を押しながらドラッグします。
Claude Codeとtmuxを組み合わせる理由
Claude Codeは、端末の中で長時間動く対話型のCLIです。1回の依頼で数分から数十分動き続けることもあります。tmuxの「画面を分ける」「作業を残す」という2つの機能と相性がよく、組み合わせて使う人が増えています。
SSH先で切断されても処理が止まらない
リモートの開発サーバーでClaude Codeを動かしている途中にSSHが切れると、通常はClaude Codeごと終了します。tmuxの中で起動しておけば、PCを閉じて移動しても処理は続き、戻ってから結果を確認できます。
ssh dev-server
tmux new -s claude
claude
# 作業を依頼したら Ctrl+b → d でデタッチしてよい
ただし、Claude Codeがコマンド実行の許可を求めて止まっている場合は、アタッチして応答するまで先に進みません。デタッチする前に、よく使う操作を許可設定に入れておくと待ち時間を減らせます。
複数のClaude Codeを並べて動かす
ペインを分けて、別々の作業を任せたClaude Codeを同時に動かす使い方もあります。1つが時間のかかる作業をしている間に、隣のペインで別の作業を進められます。
構成の一例を図にすると次のとおりです。
同じリポジトリの同じディレクトリで複数のClaude Codeを動かすと、同じファイルを同時に書き換えて衝突することがあります。git worktreeで作業ディレクトリを分けておくと安全です。
# ブランチごとに別ディレクトリを作る
git worktree add ../myapp-login -b feature-login
git worktree add ../myapp-cache -b fix-cache
それぞれのペインで対応するディレクトリに移動してから claude を起動します。tmux上の複数のClaude Codeについて、作業中か入力待ちかをまとめて確認できる管理ツール(claude-tmuxなど)も、有志によって公開されています。
エージェントチームを分割ペインで表示する
Claude Codeには、複数のClaude Codeが「リーダー」と「チームメイト」に分かれて協調する「エージェントチーム」という機能があります。2026年10月時点では実験的機能の扱いで、初期状態では無効です。
表示方法は2種類あります。初期値は、1つの端末の中でチームメイトを切り替えて見る in-process モードです。分割ペインモードにすると、チームメイトごとにペインが作られ、全員の作業を同時に見渡せます。
分割ペインモードを使うには、tmuxか、it2 CLIを導入したiTerm2が必要です。Windows Terminal、Ghostty、VS Codeの統合ターミナルは、端末自身の分割機能では対応していません。これらの端末を使っている場合でも、中でtmuxを起動し、その中でClaude Codeを動かせば分割表示を使えます(WindowsではWSL上で動かします)。
Claude Codeをtmuxの中で使うときの設定
Shift+Enterと通知を有効にする
tmuxの初期設定のままClaude Codeを動かすと、次の2つの問題が起きます。
- Shift+Enterで改行できず、そのまま送信されてしまう
- 処理完了のデスクトップ通知や進捗表示が、外側のターミナルまで届かない
外側のターミナルがShift+Enterや通知に対応していても、間にtmuxが入ると情報が途中で落ちるためです。Claude Codeの公式ドキュメントでは、~/.tmux.conf に次の4行を追加する方法が案内されています。
set -g allow-passthrough on
set -g focus-events on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
allow-passthrough は、通知や進捗表示を外側のターミナルへ通すための設定です。extended-keys の2行は、tmuxがShift+Enterと通常のEnterを区別できるようにします。追加したら tmux source-file ~/.tmux.conf で反映し、Claude Codeを再起動してください。
設定前でも、Ctrl+J か「\ を入力してからEnter」であれば改行できます。こちらはtmuxの設定に関係なく使えます。
VS Codeの統合ターミナルやAlacritty(0.16より前)などで /terminal-setup を実行する場合は、tmuxの外で実行します。このコマンドは外側のターミナルの設定ファイルを書き換えるためです。
画面のちらつきが気になる場合
Claude Codeの出力中に画面がちらついたり、スクロール位置が飛んだりする場合は、Claude Code側で /tui fullscreen を実行すると全画面の描画モードに切り替わります。このモードでは、スクロールはtmuxのコピーモードではなく、Claude Codeの中でマウスやPageUpを使って行います。
エージェントチームの分割表示を有効にする
~/.claude/settings.json に次の設定を追加します。
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
},
"teammateMode": "auto"
}
"auto" は、tmuxの中で起動したときは分割ペインを使い、それ以外では in-process モードに戻る設定です。tmuxを起動してから claude を実行し、「3人のチームメイトでこのPRをレビューして」のように自然文で依頼すると、チームメイトのペインが作られます。
作業中のウィンドウでチームを起動すると、既存のペインの横にチームメイトのペインが追加され、配置が崩れやすくなります。Ctrl+b → c でチーム用の新しいウィンドウを作ってから起動すると扱いやすくなります。
Claude Codeとtmuxを組み合わせるときの注意点
| 注意点 | 内容と対策 |
|---|---|
| Windowsネイティブでは使えない | tmuxはWindowsで直接動かない。WSL上にtmuxとClaude Codeを入れて使う |
| トークン消費が増える | 並列セッションやエージェントチームは、1セッションより大幅にトークンを使う。公式ドキュメントでもチームメイトは3〜5人から始めることを推奨している |
| 同じファイルの同時編集 | 複数のClaude Codeが同じファイルを書き換えると上書きが起きる。worktreeで分けるか、担当ファイルを分ける |
| 許可待ちで止まる | デタッチ中に許可待ちになると処理が進まない。通知が届くように設定し、よく使う操作は事前に許可しておく |
| tmuxセッションの消し忘れ | エージェントチーム終了後にtmuxセッションが残る場合がある。tmux ls で確認し、tmux kill-session -t セッション名 で終了する |