【設定・環境構築】tmux + Ghostty + Claude Code で作る最強のターミナル開発環境

この記事でわかること
- Ghostty 単体では得られない「セッション永続化」のために tmux を重ねる理由
- Session / Window / Pane の 3 概念と、最小限覚えるキーバインド
- 体感が変わる .tmux.conf のミニマム設定と、TPM での永続化
- Ghostty で tmux を使うときに必要な 3 つの設定(true color / 拡張キー / passthrough)
- Claude Code を tmux 配下で回すときのペイン構成と、危険操作を分ける考え方
macOS(Linux でもほぼ同じ手順)、Homebrew、Ghostty インストール済み。ターミナルの基本操作ができれば十分です。
この記事の概要
tmux と Ghostty を組み合わせて、Claude Code をはじめとする CLI ツールを快適に動かすターミナル開発環境を構築する完全ガイドです。インストールから .tmux.conf カスタマイズ、TPM プラグイン、Ghostty 固有の連携設定、Claude Code 運用ワークフローまで段階的に解説します。
はじめに
Ghostty は HashiCorp 創業者 Mitchell Hashimoto による高速なターミナルエミュレータで、2024 年末の 1.0 リリース以降、macOS / Linux で iTerm2 や Terminal.app の代替候補として急速に普及しています。一方 tmux はターミナルマルチプレクサの定番で、画面分割・セッション永続化・detach/attach といった独自の価値を持ちます。
Ghostty 単体でもタブ・分割は可能ですが、「ターミナルを閉じてもセッションが死なない」「SSH 切断に強い」「同じセッションに別マシンから繋ぎ直せる」 という性質は tmux にしかありません。さらに Claude Code のような長時間実行する CLI エージェントを使う上で、この永続化は実用上ほぼ必須です。
この記事では Ghostty + tmux + Claude Code の三層構成を、ゼロから構築する手順をまとめます。
1. tmux とは何か
tmux (terminal multiplexer) は 1 つのターミナルウィンドウの中に複数の独立した仮想ターミナルを持てるツールです。役割を整理すると以下の 3 層に分かれます。
| レイヤー | 役割 | 例 |
|---|---|---|
| ターミナルエミュレータ | 描画・ウィンドウ管理 | Ghostty / iTerm2 / Alacritty |
| マルチプレクサ | セッション・ペイン・永続化 | tmux / zellij / screen |
| シェル / CLI | コマンド実行 | zsh / fish / claude |
tmux が提供する価値は次の 3 点に集約されます。
- 画面分割: 1 ウィンドウ内に複数のシェルを並べられる
- セッション永続化: ターミナルを閉じても・SSH が切れてもプロセスが死なない
- detach / attach: 同じセッションに別マシンから繋ぎ直せる
Ghostty 自体にもタブ・ペイン分割機能はありますが、永続化と detach は tmux にしかありません。これが両方を組み合わせる最大の理由です。
2. インストール
macOS では Homebrew で即インストールできます。
brew install tmux
tmux -V # → tmux 3.6 などが表示されれば OKバージョン確認まで通れば準備完了です。設定ファイルもプラグインも不要で、すぐに起動できます。
tmux # 起動
exit # 終了 (またはセッション内のシェルを全部閉じる)3. 必須の 3 概念: Session / Window / Pane
tmux を扱う上で絶対に押さえるべきは Session / Window / Pane の階層構造です。
Session (作業プロジェクト単位)
├─ Window 1 ("editor" — タブみたいなもの)
│ ├─ Pane (左: nvim)
│ └─ Pane (右: shell)
├─ Window 2 ("logs")
│ └─ Pane (docker compose logs -f)
└─ Window 3 ("git")各レイヤーの役割は以下の通り。
- Session: プロジェクト 1 個 = セッション 1 個が基本。
tmux lsで一覧表示 - Window: ブラウザのタブ的存在。役割ごとに切り分ける (editor, logs, git, など)
- Pane: ウィンドウを縦横に分割した個々のシェル
迷ったら 「Session = プロジェクト / Window = 役割 / Pane = 並列したいもの」 で整理すると良いです。
4. 最低限覚える操作
tmux の操作は prefix キー → コマンドキー の 2 段押しが基本。デフォルト prefix は Ctrl+b です。
4.1 セッション操作
| 操作 | コマンド |
|---|---|
| 新規セッション (名前付き) | tmux new -s work |
| セッション一覧 | tmux ls |
| 再接続 | tmux attach -t work |
| detach (裏に回す) | Ctrl+b → d |
| セッション切替 (中から) | Ctrl+b → s |
4.2 ウィンドウ操作 (タブ的)
| 操作 | キー |
|---|---|
| 新規ウィンドウ | Ctrl+b → c |
| 次/前のウィンドウ | Ctrl+b → n / p |
| 番号で直接ジャンプ | Ctrl+b → 0〜9 |
| 名前変更 | Ctrl+b → , |
| ウィンドウ一覧から選択 | Ctrl+b → w |
4.3 ペイン操作 (分割)
| 操作 | キー |
|---|---|
| 縦分割 (上下) | Ctrl+b → " |
| ペイン最大化トグル | Ctrl+b → z |
| ペイン入替 | Ctrl+b → { / } |
4.4 コピーモード (スクロール・コピー)
| 操作 | キー |
|---|---|
| コピーモード開始 | Ctrl+b → [ |
| 終了 | q |
| 選択開始 (vi モード) | v (要設定) |
| コピー | y (要設定) または Enter |
| ペースト | Ctrl+b → ] |
Ctrl+b → ? で全キーバインド一覧が表示されます。迷ったらまずこれを確認。5. 実践的なワークフロー
5.1 開発の定番 3 ペイン構成
┌──────────────────┬──────────────────┐
│ │ docker logs -f │
│ editor (nvim) ├──────────────────┤
│ │ shell (test 用) │
└──────────────────┴──────────────────┘左にエディタ、右上にログ tail、右下に検証用シェル。立ち上げる手順は以下のようになります。
tmux new -s myproject
cd ~/projects/myrepo
nvim .
# Ctrl+b % # 横分割 → 右側に shell
# Ctrl+b " # その shell を縦分割 → 上下に
# Ctrl+b ↑ # 右上に移動
docker compose logs -f api
# Ctrl+b ↓ # 右下に移動 → 自由にコマンド検証5.2 detach して放置するパターン
長時間ジョブ (build, migration, AI エージェントの自動実行など) を流したら、ターミナルから一旦離れて他の作業に移れます。
# 中で Ctrl+b d を押す → detach (バックグラウンドに回る、プロセスは生き続ける)
tmux ls # 状態確認
tmux attach -t myproject # 戻る5.3 SSH 先での tmux
リモート作業の必須テクニック。SSH が切れても作業が死にません。
ssh dev-server
tmux new -s deploy # 初回
# 作業を進める。ネットが切れても問題なし
# 再ログイン後:
tmux attach -t deploy5.4 タスクごとにセッションを切る
複数の作業を並行する時はセッションを分けるのが鉄則です。
tmux new -s pr-review # PR レビュー対応
tmux new -s research # 別機能の調査
tmux new -s bugfix # バグ調査Ctrl+b s でセッション間をスイッチできます。
6. .tmux.conf カスタマイズ入門
~/.tmux.conf を整備すると一気に快適になります。まず最小構成、慣れたら拡張 が原則です。
6.1 ミニマム版 (これだけで体感が変わる)
# 1. prefix を Ctrl-b → Ctrl-a に変更 (押しやすい位置)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# 2. マウス操作を有効化 (クリック・スクロール・リサイズ)
set -g mouse on
# 3. 分割キーを直感的に (| と -)
unbind '"'
unbind %
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# 4. ウィンドウ番号を 1 から始める
set -g base-index 1
setw -g pane-base-index 1
# 5. 設定リロードをショートカット化
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# 6. スクロールバックを増やす (長い出力を遡れる)
set -g history-limit 50000
# 7. ESC キーの遅延を削除 (Vim/Neovim 用)
set -sg escape-time 0設定の反映は tmux 内なら Ctrl+a r、外からなら tmux source-file ~/.tmux.conf で行います。
6.2 Vim ライクなペイン移動
矢印キーよりも hjkl を使ったほうが手の移動が少なく済みます。
# hjkl でペイン移動
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Shift+hjkl でペインリサイズ
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 56.3 コピーモードを vi 式に + macOS クリップボード連携
選択 → y でシステムクリップボードにコピーされるようにしておくと便利です。
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-pipe-no-clear "pbcopy"これで Ctrl+a [ でコピーモードに入り、v で選択開始、y でクリップボードに飛びます。
6.4 ステータスバー (最小カスタム)
上部に置くと視線移動が少なくて良いです。
set -g status-position top
set -g status-style bg=black,fg=white
set -g status-left "[#S] "
set -g status-right "%Y-%m-%d %H:%M "
set -g status-interval 57. プラグイン: TPM で導入する
tmux のプラグインは TPM (Tmux Plugin Manager) で管理するのが標準です。
7.1 TPM インストール
まずリポジトリを clone します。
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' # resurrect の自動化
set -g @plugin 'christoomey/vim-tmux-navigator' # Vim とペイン移動を統合
set -g @plugin 'catppuccin/tmux' # 見た目テーマ
# tmux-continuum 自動復元
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'
# これは必ず最後に書く
run '~/.tmux/plugins/tpm/tpm'設定後、Ctrl+a I (大文字) でプラグイン一括インストール。これで永続化と見た目が一気に整います。
7.2 重要プラグインの効能
| プラグイン | 効果 |
|---|---|
| tmux-sensible | 「皆これ入れときゃ良いよね」のデフォルト集。最初に入れる |
| tmux-resurrect | Ctrl+a Ctrl+s で保存 / Ctrl+a Ctrl+r で復元。マシン再起動を超えて生き残る |
| tmux-continuum | resurrect を 15 分ごとに自動実行 + 起動時に自動復元 |
| vim-tmux-navigator | Neovim 内のウィンドウと tmux ペインを Ctrl+h/j/k/l でシームレスに移動 |
| catppuccin/tmux | ステータスバーをモダンに。Ghostty の catppuccin テーマと揃えると統一感が出る |
7.3 「Oh My Tmux!」という選択肢
設定をゼロから書くのが面倒なら gpakosz/.tmux (通称 Oh My Tmux!) という設定一式を使う手もあります。
cd ~ && git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .カスタマイズは .tmux.conf.local だけ触れば本体は壊れない設計で、初心者の最短ルートとしては最適です。
8. Ghostty との連携で押さえる 3 点
Ghostty で tmux を使うと、デフォルトのままだと地味に不具合が出ます。以下の設定を .tmux.conf に追加しておくと安全です。
8.1 True Color (24bit カラー)
Ghostty は RGB フルカラー対応ですが、tmux 側で明示的に許可しないとテーマがくすみます。
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",xterm-256color:RGB"
set -ga terminal-overrides ",xterm-ghostty:RGB"8.2 拡張キーボードプロトコル (CSI-u / kitty keyboard)
Ghostty は Ctrl+Shift+... 系の細かいキー入力を区別できる拡張プロトコルを話します。tmux に伝えないと文字化けして表示されます。
set -g extended-keys on
set -as terminal-features 'xterm*:extkeys'8.3 画像パススルー (sixel / kitty graphics)
tmux 内で画像を表示するツール (lazygit など一部) を使う場合に有効化します。
set -g allow-passthrough onallow-passthrough を off にしたほうが安全です。任意のエスケープシーケンスが通ってしまうリスクがあります。8.4 Ghostty 起動時に tmux を自動 attach
~/.config/ghostty/config に以下を書くと、Ghostty を開いた瞬間に tmux セッションへ入れます。
command = /bin/zsh -l -c "tmux attach -t main || tmux new -s main"これで「Ghostty 起動 = main セッション復帰」が成立。tmux-continuum と組み合わせれば、再起動後も全ペインが復元されます。
9. Claude Code との組み合わせ
ここからが本題。tmux + Ghostty に Claude Code を載せる運用パターンです。
9.1 基本パターン
tmux new -s claude-myproject
cd ~/projects/myrepo
claudeこれだけで以下が成立します。
- ターミナル閉じても会話継続
/loopや background agent が detach 中も走り続ける- 別マシンから
tmux attachで同じ会話に再接続できる
9.2 推奨ペイン構成
┌──────────────────┬──────────────────┐
│ │ docker logs -f │
│ claude ├──────────────────┤
│ │ 検証用 shell │
└──────────────────┴──────────────────┘左で claude にコードを書かせ、右で自分の手で挙動確認。Claude が書いたコードは自分の目で並行して検証する のが鉄則です。
9.3 並列タスクは別セッションで
Claude を複数走らせるなら、タスクごとに tmux session を切ります。
tmux new -s claude-pr-review
tmux new -s claude-bugfix
tmux new -s claude-researchgit worktree add と組み合わせるとブランチが分離されて事故りません。
git worktree add ../myrepo-pr-review origin/feature/xyz
tmux new -s claude-pr-review -c ../myrepo-pr-review9.4 危険操作は claude のペインの外で
terraform apply / git push --force / rm -rf のような不可逆操作は 必ず別ペインで自分の手で実行 します。AI エージェントに権限を持たせすぎないという原則に沿って、tmux の物理的な分離をもう 1 段のガードとして使うイメージです。
10. つまずきポイント FAQ
Q. prefix を押すのが面倒
Ctrl+b を Ctrl+a か Ctrl+Space に変更しましょう。さらに OS レベルで Caps Lock を Ctrl にリマップすると劇的に楽になります。
Q. macOS の Cmd+K で画面クリアしたら tmux のスクロールバックも消えた
tmux のスクロールバックは独立しています。Ctrl+a [ でコピーモードに入ってから遡るか、clear-history で明示的にクリアしてください。
Q. ペインの中の Vim が色化けする
true color 設定漏れです。セクション 8.1 の terminal-overrides を入れてください。
Q. Ghostty のタブと tmux のウィンドウ、どっちを使えば?
tmux のウィンドウを優先するのがおすすめです。Ghostty タブは「全く別の作業 (個人 dotfiles 編集など)」用に使い分けると衝突しません。
Q. tmux ネスト (tmux の中で tmux) したい
内側の prefix を Ctrl+a a のように 2 度押しに設定すれば共存できます。SSH 先で tmux を使う時に発生しがちな構成です。
Q. なんか変な状態になった
tmux kill-server で全セッション破棄、tmux kill-session -t name で特定セッションだけ。困ったらリセットが早いです。
Tips / ベストプラクティス
実運用で効くポイント
- prefix キーは早めに変更する: デフォルトの
Ctrl+bは左手の小指を酷使する。Ctrl+aに慣れると後戻りできない - resurrect + continuum は最初から入れる: マシン再起動・OS アップデートで失う作業時間が一気に減る
- セッション名は具体的に:
workではなくclaude-pr-494のように何のための作業か分かる名前にする - mouse on は罪悪感を持たずに使う: 「キーボード派でないとダメ」は古い思想。マウスでペイン選択・スクロールするのは普通に効率的
- 「Ghostty タブ = 完全別作業 / tmux Window = 同じプロジェクトの役割分け」で住み分け: 階層がぶつからず混乱しない
- 危険コマンドは AI ペインの外: AI と物理的にペインを分けることで、意図しない実行を視覚的に防げる
学習ロードマップ
いきなり全部覚える必要はありません。段階的に拡張していくのが現実的です。
- Day 1:
brew install→tmux new→Ctrl+b %Ctrl+b "Ctrl+b 矢印Ctrl+b dtmux attach。これだけで価値の 80% は取れる - Day 2-3:
~/.tmux.confに prefix 変更・マウス・分割キーだけ書く - Week 1: TPM + tmux-resurrect + continuum で永続化を獲得する
- Week 2: catppuccin / vim-tmux-navigator など見た目と統合系を整備
- Week 3+: Ghostty
command =で自動 attach。Claude Code を tmux 配下で運用するワークフロー確立
参考リンク
公式・一次情報
設定・カスタマイズ
- Ham Vocke — A Guide to Customizing Your tmux.conf
- gpakosz/.tmux (Oh My Tmux!)
- Built In — tmux Config Guide
プラグイン
Ghostty 連携
- Mansoor Barri — Tmux & Ghostty
- SubDepthTech — Tmux + Ghostty Workflow
- darren.sh — Dev Terminal Setup with Ghostty + Tmux + Neovim
まとめ
- Ghostty / tmux / Claude Code は役割が違う 3 層 — エミュレータ・マルチプレクサ・CLI を組み合わせることで永続性と並列性を獲得
- インストールは
brew install tmuxで即完了 — 設定ゼロでも基本機能は使える - 覚えるべきは Session / Window / Pane の 3 概念とそれぞれのキーバインド —
Ctrl+b ?でいつでも参照できる .tmux.confは最小構成から始める — prefix 変更・マウス・分割キー・base-index・history-limit だけで体感が劇的に変わる- TPM + resurrect + continuum で永続化を完全自動化 — マシン再起動を意識しなくてよくなる
- Ghostty 連携には true color / extended-keys / passthrough の 3 設定が必須
- Claude Code は tmux セッション内で起動 — 並列タスクは別セッション + git worktree で完全分離
慣れてくると tmux なしの開発に戻れなくなります。まずは Day 1 の「最小操作だけ覚える」から始めて、徐々に設定とプラグインを足していくのがおすすめです。
更新履歴
- 表が崩れていたのを修正。4 つの表でヘッダーは 2 列なのに各行に 4 セル入っており、表示が崩れていたのを 1 行 1 項目に展開。.tmux.conf などのコードブロックの言語指定を javascript から bash / ini / text に修正し、ファイルパスをキャプションに追加。「この記事でわかること」「対象読者」「前提条件」を概要プロパティへ移動。
- 記事内リンクの修正


