tmux 入門:ターミナルマルチプレクサで作業環境を快適にする
よるほろぐ編集部
tmux はターミナルマルチプレクサ(terminal multiplexer)です。一言でいえば「端末を分割・多重化するツール」で、次のような使い方ができます。
- SSH 切断後もセッションが残る — ネットワーク障害や接続タイムアウトが発生しても、tmux のセッションはサーバー側で生き続けます。再接続してアタッチすれば、切断前の状態がそのまま戻ってきます。
- 1 つの端末を複数ペインに分割 — 1 つのターミナルウィンドウを上下・左右に分割して、複数のコマンドを並べて実行できます。
- 作業状態を保存して後で再開 — セッションを名前付きで管理できるので、「今日の作業」を保存して翌日そのまま続けられます。
screen との違い
tmux と似たツールに screen(GNU Screen)があります。どちらも「セッション管理+端末分割」を提供しますが、tmux のほうが後発で設計が洗練されています。
| 項目 | tmux | screen |
|---|---|---|
| 設定ファイル | ~/.tmux.conf(構文が明快) | ~/.screenrc |
| ペイン分割 | 縦横どちらでも柔軟に対応 | サポートあり |
| コピーバッファ | 複数保持 | 1 つ |
| アクティブ開発 | 継続中 | 更新が少ない |
| スクリプタビリティ | 高い(フォーマット変数など) | 限定的 |
今から始めるなら tmux を選ぶほうが情報量も多く、プラグインエコシステムも充実しているためおすすめです。
インストール
主要な環境でのインストールコマンドは以下のとおりです。
# Ubuntu / Debian 系
sudo apt install tmux
# Fedora / RHEL 系
sudo dnf install tmux
# macOS (Homebrew)
brew install tmux
# FreeBSD
pkg install tmux
インストール後、バージョンを確認します。
tmux -V
# tmux 3.x のように表示されれば OK
基本概念: セッション・ウィンドウ・ペイン
tmux には セッション(Session) ・ ウィンドウ(Window) ・ ペイン(Pane) という 3 層の概念があります。
graph TD S["セッション: work"] --> W1["ウィンドウ 0: bash"] S --> W2["ウィンドウ 1: vim"] W1 --> P1["ペイン 0(左)"] W1 --> P2["ペイン 1(右)"] W2 --> P3["ペイン 0"]
- セッション: tmux サーバー上の作業単位。デタッチしてもサーバー側に残り続けます。名前で管理できます。
- ウィンドウ: セッション内のタブのようなもの。画面全体を占有します。
- ペイン: ウィンドウを分割した個々の端末領域。それぞれ独立した擬似端末(pty)です。
この階層を把握しておくと、後の操作の意味が直感的に分かるようになります。
プレフィックスキー
tmux のキーバインドはすべて プレフィックスキー(デフォルトは Ctrl-b)を先に押してから別のキーを入力する形式です。
Ctrl-b を 押して離してから、次のキーを押します。同時押しではありません。たとえばウィンドウを新規作成する Ctrl-b c は「Ctrl を押しながら b を押し、両方を離してから c を押す」という操作になります。
プレフィックスキーを押した後に : を入力すると、tmux のコマンドプロンプトが開きます。コマンドを直接入力して実行でき、Tab 補完も効きます。また Ctrl-b ? で現在有効なキーバインドの一覧を確認できます。
ペイン操作
ペインの分割
| キー操作 | 動作 |
|---|---|
Ctrl-b " | 現在のペインを上下に分割 |
Ctrl-b % | 現在のペインを左右に分割 |
コマンドで指定するときは以下のとおりです。
# 上下に分割(-v はデフォルトなので省略可)
tmux split-window -v
# 左右に分割
tmux split-window -h
ペイン間の移動・操作
| キー操作 | 動作 |
|---|---|
Ctrl-b ↑/↓/←/→ | 矢印方向のペインへ移動 |
Ctrl-b o | 次のペインへ移動(ローテーション) |
Ctrl-b ; | 直前のアクティブペインへ戻る |
Ctrl-b q | ペイン番号を一時表示(番号キーでそのまま移動) |
Ctrl-b z | 現在のペインを全画面にズーム(もう一度で解除) |
Ctrl-b x | 現在のペインを閉じる(確認あり) |
ペインのリサイズ
| キー操作 | 動作 |
|---|---|
Ctrl-b Ctrl-↑/↓/←/→ | 1 セル単位でリサイズ |
Ctrl-b Alt-↑/↓/←/→ | 5 セル単位でリサイズ |
ウィンドウ操作
| キー操作 | 動作 |
|---|---|
Ctrl-b c | 新しいウィンドウを作成 |
Ctrl-b n | 次のウィンドウへ切り替え |
Ctrl-b p | 前のウィンドウへ切り替え |
Ctrl-b 0〜9 | 番号でウィンドウを直接選択 |
Ctrl-b l | 直前のウィンドウへ戻る |
Ctrl-b , | 現在のウィンドウをリネーム |
Ctrl-b & | 現在のウィンドウを閉じる(確認あり) |
Ctrl-b w | ウィンドウ一覧をインタラクティブ表示 |
セッション操作
セッションの作成
# 名前付きセッションを作成して接続
tmux new-session -s work
# 短縮形
tmux new -s work
# バックグラウンドで作成(接続しない)
tmux new-session -d -s monitoring
デタッチ・アタッチ
実行中のセッションから抜けるには Ctrl-b d(デタッチ)を押します。セッションはサーバー側に残り続けます。
# セッション一覧を確認
tmux list-sessions
# 短縮形
tmux ls
# 特定のセッションにアタッチ
tmux attach-session -t work
# 短縮形
tmux attach -t work
# セッションが 1 つだけなら引数不要
tmux attach
SSH 接続が切れても、サーバー側の tmux セッションは生き続けています。再接続後に tmux attach するだけで、切断前の作業状態にそのまま戻れます。これが tmux を日常的に使う最大の動機の一つです。
セッション間の切り替え・削除
| キー操作 | 動作 |
|---|---|
Ctrl-b s | セッション一覧をインタラクティブ表示・切り替え |
Ctrl-b $ | 現在のセッションをリネーム |
Ctrl-b ( | 前のセッションへ切り替え |
Ctrl-b ) | 次のセッションへ切り替え |
# 特定のセッションを終了
tmux kill-session -t work
# tmux サーバーごと終了(全セッション削除)
tmux kill-server
コピーモード
コピーモードはペイン内のスクロールバック履歴を閲覧したり、テキストをコピーしたりするためのモードです。Ctrl-b [ で入ると、画面の右上に現在位置と履歴の行数が表示されます。
tmux のコピーモードには emacs スタイル(デフォルト)と vi スタイルの 2 種類のキーバインドがあります。mode-keys オプションで切り替えられます。
emacs モード(デフォルト)
| キー操作 | 動作 |
|---|---|
↑/↓ または C-p/C-n | スクロール |
Page Up/Down | ページ単位でスクロール |
C-Space | 選択開始 |
M-w | 選択をコピーしてモード終了 |
Escape | コピーモードを終了 |
vi モード(set -g mode-keys vi 設定時)
| キー操作 | 動作 |
|---|---|
j/k | 上下スクロール |
C-d/C-u | 半ページスクロール |
Space | 選択開始 |
Enter | 選択をコピーしてモード終了 |
q | コピーモードを終了 |
コピーした内容は Ctrl-b ] でペーストできます。
.tmux.conf によるカスタマイズ
tmux は起動時に ~/.tmux.conf(または $XDG_CONFIG_HOME/tmux/tmux.conf)を読み込みます。以下はすぐ使える実用的な設定をまとめたサンプルです。
# ──────────────────────────────────────────
# プレフィックスキーを Ctrl-a に変更
# (GNU screen からの移行や、Ctrl-b が遠い場合に便利)
# ──────────────────────────────────────────
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# ──────────────────────────────────────────
# マウス操作を有効化
# スクロール、ペイン選択、リサイズがマウスで行えるようになる
# ──────────────────────────────────────────
set -g mouse on
# ──────────────────────────────────────────
# vi スタイルのコピーモード
# ──────────────────────────────────────────
set -g mode-keys vi
# ──────────────────────────────────────────
# ペイン分割キーを直感的なキーに変更
# | で左右分割、- で上下分割
# -c オプションで現在のディレクトリを引き継ぐ
# ──────────────────────────────────────────
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# 新規ウィンドウも現在のディレクトリで開く
bind c new-window -c "#{pane_current_path}"
# ──────────────────────────────────────────
# ステータスバー
# ──────────────────────────────────────────
set -g status-right "%Y-%m-%d %H:%M" # 右端に日時を表示
# ──────────────────────────────────────────
# 設定ファイルのリロード
# Prefix + R で ~/.tmux.conf を再読み込み
# ──────────────────────────────────────────
bind R source-file ~/.tmux.conf \; display-message "Reloaded ~/.tmux.conf"
# ──────────────────────────────────────────
# ウィンドウ番号を 1 から始める(0 はキーボードで遠い)
# ──────────────────────────────────────────
set -g base-index 1
setw -g pane-base-index 1
設定を変更した後は、tmux の中でプレフィックス + : を押してコマンドプロンプトを開き、source-file コマンドで再読み込みできます。
# tmux コマンドプロンプト(Ctrl-b :)から実行
source-file ~/.tmux.conf
# またはシェルから実行
tmux source-file ~/.tmux.conf
.tmux.conf の変更は、すでに起動中のセッションには自動では反映されません。source-file コマンドで明示的に再読み込みするか、tmux サーバーを再起動する必要があります。プレフィックスキーを変更したときは特に注意が必要です。
キーバインド早見表
ペイン
| キー操作 | 動作 |
|---|---|
Ctrl-b " | 上下に分割 |
Ctrl-b % | 左右に分割 |
Ctrl-b ↑/↓/←/→ | ペイン間を移動 |
Ctrl-b o | 次のペインへ |
Ctrl-b ; | 直前のペインへ |
Ctrl-b q | ペイン番号を表示 |
Ctrl-b z | ズームトグル(全画面表示の切り替え) |
Ctrl-b x | ペインを閉じる |
Ctrl-b Ctrl-↑↓←→ | 1 セル単位でリサイズ |
Ctrl-b Alt-↑↓←→ | 5 セル単位でリサイズ |
ウィンドウ
| キー操作 | 動作 |
|---|---|
Ctrl-b c | 新規ウィンドウ作成 |
Ctrl-b n | 次のウィンドウ |
Ctrl-b p | 前のウィンドウ |
Ctrl-b l | 直前のウィンドウへ戻る |
Ctrl-b 0〜9 | 番号でウィンドウ選択 |
Ctrl-b , | ウィンドウをリネーム |
Ctrl-b & | ウィンドウを閉じる |
Ctrl-b w | ウィンドウ一覧 |
セッション
| キー操作 | 動作 |
|---|---|
Ctrl-b d | デタッチ(セッションは維持) |
Ctrl-b s | セッション一覧・切り替え |
Ctrl-b $ | セッションをリネーム |
Ctrl-b ( | 前のセッション |
Ctrl-b ) | 次のセッション |
コピーモード・その他
| キー操作 | 動作 |
|---|---|
Ctrl-b [ | コピーモードへ |
Ctrl-b ] | ペースト |
Ctrl-b ? | キーバインド一覧を表示 |
Ctrl-b : | tmux コマンドプロンプト |
出典
- tmux README(ISC ライセンス): https://github.com/tmux/tmux/blob/master/README
- tmux(1) man ページ(
man tmuxでローカルでも参照可能) - tmux example_tmux.conf(パブリックドメイン): https://github.com/tmux/tmux(リポジトリ内
example_tmux.conf) - tmux Wiki: https://github.com/tmux/tmux/wiki