この記事の要点
• prefix + dでデタッチ、tmux attachで再接続(SSH切断後も復帰可能)
• prefix + %(縦分割)とprefix + "(横分割)でペイン管理
• ~/.tmux.confでキーバインドとUIを自由にカスタマイズ
概要
tmux(terminal multiplexer)は 1 つのターミナル内で複数のセッション・ウィンドウ・ペインを管理できるツールです。SSH 接続が切れてもセッションを維持できる、画面分割で複数のシェルを並べて作業できる、設定ファイルでキーバインドや見た目を自由にカスタマイズできる、といった理由でサーバー作業や開発環境として広く使われています。本チートシートは tmux 3.x 系を対象にします。
起動と接続
| コマンド | 説明 |
|---|
tmux | 新規セッションを開始 |
tmux new -s <name> | 名前付きセッションを開始 |
tmux ls | セッション一覧を表示 |
tmux attach | 直近のセッションにアタッチ |
tmux attach -t <name> | 名前指定でアタッチ |
tmux a -t <name> | attach の短縮 |
tmux kill-session -t <name> | セッション終了 |
tmux kill-server | サーバ停止(全セッション終了) |
tmux source-file ~/.tmux.conf | 設定をリロード |
tmux info | 内部情報表示 |
tmux -V | バージョン表示 |
prefix キー
既定の prefix は Ctrl+b。本ドキュメントでは <prefix> と表記します。多くのユーザーは .tmux.conf で Ctrl+a に変更しています。
| 設定 | 説明 |
|---|
unbind C-b | Ctrl+b のバインドを解除 |
set -g prefix C-a | prefix を Ctrl+a に変更 |
bind C-a send-prefix | Ctrl+a を prefix として送信 |
ポイント: tmux new -A -s nameで「セッションがあればattach、なければ新規作成」。この1コマンドを覚えるだけで日常の使い方がカバーできます。
セッション操作
| キー | 説明 |
|---|
<prefix> d | デタッチ |
<prefix> D | クライアントを選んでデタッチ |
<prefix> s | セッション選択(ツリー) |
<prefix> $ | セッション名変更 |
<prefix> ( | 前のセッション |
<prefix> ) | 次のセッション |
<prefix> L | 直前にアタッチしていたセッション |
ウィンドウ操作
| キー | 説明 |
|---|
<prefix> c | 新規ウィンドウ |
<prefix> , | ウィンドウ名変更 |
<prefix> & | ウィンドウを閉じる |
<prefix> n | 次のウィンドウ |
<prefix> p | 前のウィンドウ |
<prefix> 0-9 | 番号で切替 |
<prefix> ' | 番号を入力して切替 |
<prefix> w | ウィンドウ一覧から選択 |
<prefix> f | ウィンドウ検索(タイトルに含まれる文字列) |
<prefix> . | ウィンドウ番号を変更 |
<prefix> l | 直前のウィンドウ |
実践メモ: セッションには用途別の名前を付けましょう(web, api, dbなど)。tmux lsで一覧が見やすくなり、切り替えもprefix + sで素早くできます。
ペイン操作
| キー | 説明 |
|---|
<prefix> % | ペインを縦分割 |
<prefix> " | ペインを横分割 |
<prefix> 矢印 | ペイン間移動 |
<prefix> o | 次のペインへ |
<prefix> ; | 直前のペイン |
<prefix> q | ペイン番号を表示 |
<prefix> z | ペインをズーム/解除 |
<prefix> { | ペインを左に入れ替え |
<prefix> } | ペインを右に入れ替え |
<prefix> Space | レイアウト切替 |
<prefix> ! | ペインを別ウィンドウへ |
<prefix> x | ペインを閉じる |
<prefix> Ctrl+矢印 | ペインを 1 セルリサイズ |
<prefix> Alt+矢印 | ペインを 5 セルリサイズ |
<prefix> t | 時計を表示 |
レイアウト
| 名前 | 説明 |
|---|
even-horizontal | 横に均等並び |
even-vertical | 縦に均等並び |
main-horizontal | 上に大きいペイン |
main-vertical | 左に大きいペイン |
tiled | タイル状 |
| キー | レイアウト |
|---|
<prefix> Alt+1 | even-horizontal |
<prefix> Alt+2 | even-vertical |
<prefix> Alt+3 | main-horizontal |
<prefix> Alt+4 | main-vertical |
<prefix> Alt+5 | tiled |
ポイント: prefix + zでペインのズーム(全画面表示)と解除をトグル。ログ確認時に広い画面で見たいときに便利です。
注意: synchronize-panesは全ペインに同じ入力を送る機能。複数サーバーへの一括操作に便利ですが、終わったら必ずoffにすること。誤操作で全サーバーに同じコマンドが実行されるリスクがあります。
コピーモード
<prefix> [ でコピーモードに入り、q で抜けます。
| キー(emacs モード) | 説明 |
|---|
矢印 / hjkl | カーソル移動 |
Ctrl+Space または v | 選択開始 |
Alt+w または y | コピー |
Ctrl+s | 検索(前方) |
Ctrl+r | 検索(後方) |
q | 終了 |
g | 先頭へ |
G | 末尾へ |
<prefix> ] | ペースト |
vi モードは setw -g mode-keys vi で有効化できます。
コマンドモード
<prefix> : でコマンドプロンプトに入り、tmux コマンドを直接入力できます。
| コマンド | 説明 |
|---|
:new-window -n logs | 名前付きウィンドウを作成 |
:rename-session work | セッション名を変更 |
:split-window -h -p 30 | 横分割(30%) |
:resize-pane -D 5 | ペインを下に5行リサイズ |
:set -g status-position top | ステータスバーを上に配置 |
:source-file ~/.tmux.conf | 設定ファイルを読み込み |
主要 tmux コマンド
| コマンド | 説明 |
|---|
new-session (new) | セッション作成 |
attach-session (attach) | アタッチ |
detach-client (detach) | デタッチ |
list-sessions (ls) | セッション一覧 |
kill-session | セッション終了 |
new-window (neww) | ウィンドウ作成 |
kill-window (killw) | ウィンドウ終了 |
split-window (splitw) | ペイン分割 |
select-pane (selectp) | ペイン選択 |
resize-pane (resizep) | ペインサイズ変更 |
swap-pane | ペイン入替 |
send-keys | キー送信 |
display-message | ステータスにメッセージ |
set-option (set) | グローバルオプション |
set-window-option (setw) | ウィンドウオプション |
bind-key (bind) | キー割当 |
unbind-key (unbind) | キー解除 |
実践メモ: set -g mouse onでマウス操作を有効化すると、ペインのリサイズやスクロールが直感的に。コピーはShiftを押しながらドラッグでターミナル側の選択になります。
設定ファイル例 ~/.tmux.conf
# プレフィックスを Ctrl+a に
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# マウス操作を有効化
set -g mouse on
# ウィンドウ番号を 1 から
set -g base-index 1
setw -g pane-base-index 1
# ペインを閉じても番号を詰める
set -g renumber-windows on
# 履歴
set -g history-limit 50000
# vi キーバインド(コピーモード)
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
# ペイン分割を | と - に
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# 設定リロード
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# ステータスバー
set -g status-position bottom
set -g status-interval 5
set -g status-left-length 40
set -g status-right "#[fg=cyan]%Y-%m-%d %H:%M"
# 256 色端末
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",*256col*:Tc"
# エスケープ遅延を短く
set -sg escape-time 10
実用レシピ
1. 名前付きセッションで作業を整理
| コマンド | 説明 |
|---|
tmux new -s web | web セッションを作成 |
tmux new -s api | api セッションを作成 |
tmux ls | セッション一覧を表示 |
tmux attach -t web | web セッションにアタッチ |
2. 既存セッションがあればアタッチ、なければ作成
| コマンド | 説明 |
|---|
tmux new -A -s main | main セッションに接続(なければ作成) |
3. SSH 先で永続セッション
| コマンド | 説明 |
|---|
ssh user@host | SSH 接続 |
tmux new -A -s work | work セッションを開始 |
ssh user@host | 再接続 |
tmux a -t work | work セッションに復帰 |
4. 起動時に複数ペインを準備
tmux new -d -s dev -n editor 'vim'
tmux split-window -t dev:editor -h 'npm run dev'
tmux split-window -t dev:editor -v 'tail -f log/app.log'
tmux attach -t dev
5. キー送信で全ペインに同じコマンド
| コマンド | 説明 |
|---|
:setw synchronize-panes on | 全ペインに同じ入力を送信 |
:setw synchronize-panes off | 同期を解除 |
6. コピーした内容をシステムクリップボードへ
| OS | 設定 |
|---|
| macOS | bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy" |
| Linux (xclip) | bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard" |
| Wayland (wl-clipboard) | bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "wl-copy" |
7. レイアウトを保存して再現
| コマンド | 説明 |
|---|
tmux list-windows -t dev -F "#{window_active} #{window_layout}" | レイアウト文字列を取得 |
tmux select-layout -t dev "..." | レイアウトを復元 |
8. ペインのカレントディレクトリを引き継いで分割
| 設定 | 説明 |
|---|
bind | split-window -h -c "#{pane_current_path}" | 縦分割(カレントパス継承) |
bind - split-window -v -c "#{pane_current_path}" | 横分割(カレントパス継承) |
9. 起動スクリプト
~/bin/tmux-dev:
#!/usr/bin/env bash
SESSION=dev
tmux has-session -t $SESSION 2>/dev/null && exec tmux attach -t $SESSION
tmux new -d -s $SESSION -n code
tmux send-keys -t $SESSION:code 'cd ~/project && nvim' C-m
tmux new-window -t $SESSION -n server
tmux send-keys -t $SESSION:server 'cd ~/project && npm run dev' C-m
exec tmux attach -t $SESSION
10. ステータスバーに Git ブランチを表示
| 設定 | 説明 |
|---|
set -g status-right "#(cd #{pane_current_path}; git rev-parse --abbrev-ref HEAD 2>/dev/null) | %H:%M" | Git ブランチを表示 |
よく使うオプション早見表
| オプション | 説明 |
|---|
mouse on | マウス操作 |
base-index 1 | ウィンドウ番号 1 始まり |
pane-base-index 1 | ペイン番号 1 始まり |
history-limit N | 履歴行数 |
renumber-windows on | 番号を自動で詰める |
default-terminal | 端末タイプ |
terminal-overrides | True Color など上書き |
status-position top/bottom | ステータス位置 |
escape-time N | ESC 待機ミリ秒 |
mode-keys vi/emacs | コピーモードのキー |
注意: escape-timeのデフォルト値(500ms)はVimユーザーにとって遅すぎます。set -sg escape-time 10に設定しないとEscキーの反応が鈍くなります。
トラブルシューティング
| 症状 | 原因と対処 |
|---|
| 色がおかしい | default-terminal "tmux-256color" と terminal-overrides ",*256col*:Tc" を設定 |
| ESC キーが遅い | set -sg escape-time 10 |
| マウスが効かない | set -g mouse on |
pbcopy/xclip で貼り付けできない | OS に応じたコピーコマンドを copy-pipe に指定 |
| 設定が反映されない | tmux source ~/.tmux.conf または <prefix> r |
| 配色が崩れる | $TERM が screen になっていないか確認 |
lost server | tmux サーバが落ちた。tmux start-server で再起動 |
| デフォルトシェルが違う | set -g default-shell /bin/zsh |
Tips & ベストプラクティス
- セッションには用途別の名前を付けて
tmux ls で見渡せるようにする。
tmux new -A -s <name> を alias 化すると「あれば attach、なければ作成」が一発でできる。
- 重い処理は tmux 内で実行しておけば、SSH が切れても継続する。
- ペインのズーム(
<prefix> z)はログ確認時に便利。元に戻すのも同じキー。
- マウスを有効化するとペインのリサイズや選択が直感的になる。コピーは
Shift を押しながらドラッグするとターミナル側の選択になり、貼り付けが楽。
- vi モードに慣れると検索・コピー操作が高速化する。
synchronize-panes は複数サーバへの一括操作に便利だが、危険なので終わったらすぐ off にする。
- 設定ファイルは git で管理し、複数マシンで共有する。
- tmux 3.2 以降で導入された
popup 機能(display-popup)でフローティングウィンドウを開けるので、一時的なコマンド実行に活用する。
- プラグイン管理は TPM (Tmux Plugin Manager) を使うと導入がシンプル。
ステータスバーのカスタマイズ
ステータスバーは status-left, status-right, window-status-format などのオプションで自由に組み立てられます。フォーマット文字列内で #{...} を使うことで tmux の変数を埋め込めます。
| プレースホルダ | 説明 |
|---|
#S | セッション名 |
#H | ホスト名 |
#h | 短縮ホスト名 |
#I | ウィンドウインデックス |
#W | ウィンドウ名 |
#P | ペインインデックス |
#T | ペインタイトル |
#{pane_current_path} | カレントディレクトリ |
#{pane_current_command} | 現在のコマンド |
#{?cond,a,b} | 条件式 |
%H:%M | strftime(時刻) |
set -g status-left "#[fg=green]#S #[fg=default]| "
set -g status-right "#[fg=cyan]#(whoami)@#h #[fg=yellow]%Y-%m-%d %H:%M"
set -g window-status-current-format "#[bg=blue,fg=white] #I:#W "
set -g window-status-format " #I:#W "
色は colour0-colour255 または #rrggbb(True Color 端末)で指定できます。
tmux 3.2 で導入されたフローティングウィンドウ機能です。一時的なコマンドや別作業を素早く呼び出すのに便利です。
bind P display-popup -E "htop"
bind G display-popup -w 80% -h 80% -E "lazygit"
bind N display-popup -d "#{pane_current_path}" -w 60% -h 60% -E "$SHELL"
| オプション | 説明 |
|---|
-E | コマンド終了でポップアップを閉じる |
-w <size> | 幅(数値またはパーセント) |
-h <size> | 高さ |
-d <path> | 開始ディレクトリ |
-T <title> | タイトル |
-x <pos> -y <pos> | 表示位置 |
バッファとペーストバッファ
コピーした内容は tmux のペーストバッファにスタックされます。
| コマンド | 説明 |
|---|
<prefix> ] | 直近のバッファを貼り付け |
<prefix> = | バッファ一覧から選択して貼り付け |
:show-buffer | 直近のバッファ内容を表示 |
:save-buffer ~/out.txt | バッファをファイルに保存 |
:load-buffer ~/in.txt | ファイルをバッファに読み込み |
:list-buffers | バッファ一覧 |
:delete-buffer | バッファ削除 |
:choose-buffer | 対話的に選択 |
フック
特定イベントで自動実行されるコマンドを設定できます。
| 設定 | 説明 |
|---|
set-hook -g session-created 'display-message "Welcome to tmux"' | セッション作成時にメッセージ表示 |
set-hook -g pane-focus-in 'select-pane -P bg=colour235' | ペインフォーカス時に背景色変更 |
set-hook -g pane-focus-out 'select-pane -P bg=default' | フォーカス外れ時に背景色を戻す |
代表的なフック: session-created, client-attached, pane-focus-in, pane-focus-out, window-linked, after-resize-pane, after-new-window。
TPM (Tmux Plugin Manager)
プラグインで機能を拡張できます。~/.tmux.conf の末尾に以下を追加し <prefix> I でインストール。
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'
run '~/.tmux/plugins/tpm/tpm'
代表的プラグイン:
tmux-resurrect: セッションを保存して再起動後も復元
tmux-continuum: tmux-resurrect を自動化
tmux-yank: クリップボード連携を簡単に
tmux-sensible: 推奨デフォルト設定をまとめて適用
tmux-prefix-highlight: prefix 入力中の表示
tmux-fzf: fzf ベースのセッション/ウィンドウ検索
tmux-battery: バッテリー残量をステータスバーに表示
tmux-online-status: ネットワーク接続状態を表示
プラグインのインストールは <prefix> I、更新は <prefix> U、アンインストールは <prefix> alt+u で行えます。
参考リソース
この技術を体系的に学びたいですか?
未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。
メールで無料相談する
← 一覧に戻る