Linuxでの開発作業やサーバー管理において、複数のターミナルを同時に操作する場面は日常的です。ターミナルを何枚も開いてウィンドウを切り替えるのは非効率的ですし、SSH接続が切断されると作業中のプロセスが終了してしまうリスクもあります。
この記事では、ターミナルマルチプレクサ「tmux」の基本から実践的なカスタマイズまでを体系的に解説します。tmuxをマスターすれば、1つのターミナル内で複数の作業を効率的に並行管理でき、セッションの永続化によりSSH切断時も安心して作業を続けられます。
前提条件と実行環境
| 項目 | 条件 |
|---|---|
| OS | Linux(Ubuntu、Debian、CentOS、RHEL等)、macOS、WSL2 |
| tmuxバージョン | 3.0以上(本記事は3.6aで動作確認) |
| シェル | bash、zsh等 |
| 事前知識 | 基本的なLinuxコマンド操作 |
tmuxとは何か
tmux(terminal multiplexer)は、1つのターミナル内で複数の仮想端末を管理するためのツールです。GNU screenの後継として開発され、より柔軟な設定とモダンな機能を備えています。
tmuxを使う3つのメリット
1. セッションの永続化
tmuxで実行中のプロセスは、tmuxサーバー上で動作します。SSH接続が切断されても、tmuxセッションにデタッチ(離脱)しておけば、後から再アタッチ(再接続)して作業を継続できます。
2. 画面分割による並行作業
1つのターミナルを複数のペインに分割し、エディタ、ログ監視、コマンド実行などを同時に表示できます。ウィンドウを切り替える手間がなくなります。
3. リモートワークでのペアプログラミング
同じtmuxセッションに複数のユーザーがアタッチすれば、リアルタイムで画面を共有しながら作業できます。
tmuxのアーキテクチャを理解する
tmuxを効果的に使うには、セッション、ウィンドウ、ペインという3つの概念を理解することが重要です。
graph TB
subgraph Server["tmuxサーバー"]
subgraph Session1["セッション: development"]
subgraph Window1["ウィンドウ0: editor"]
P1["ペイン0<br>vim"]
P2["ペイン1<br>terminal"]
end
subgraph Window2["ウィンドウ1: logs"]
P3["ペイン0<br>tail -f"]
end
end
subgraph Session2["セッション: monitoring"]
subgraph Window3["ウィンドウ0: htop"]
P4["ペイン0<br>htop"]
end
end
end
Client1["クライアント1"] -.->|attach| Session1
Client2["クライアント2"] -.->|attach| Session2
style Server fill:#e3f2fd,stroke:#1976d2
style Session1 fill:#fff3e0,stroke:#f57c00
style Session2 fill:#fff3e0,stroke:#f57c00
style Window1 fill:#e8f5e9,stroke:#388e3c
style Window2 fill:#e8f5e9,stroke:#388e3c
style Window3 fill:#e8f5e9,stroke:#388e3cセッション(Session)
セッションはtmuxの最上位の単位です。プロジェクトや作業内容ごとにセッションを分けて管理できます。1つのtmuxサーバーで複数のセッションを同時に実行でき、セッション間を自由に切り替えられます。
ウィンドウ(Window)
ウィンドウはセッション内のタブのような存在です。1つのセッションに複数のウィンドウを作成でき、ステータスバーに一覧表示されます。用途別にウィンドウを分けることで、作業を整理できます。
ペイン(Pane)
ペインはウィンドウ内の分割された領域です。1つのウィンドウを水平・垂直に分割して、複数のペインを同時に表示できます。エディタとターミナルを左右に並べるといった使い方が一般的です。
tmuxのインストール
Ubuntu / Debian
|
|
CentOS / RHEL / Fedora
|
|
macOS
|
|
バージョン確認
|
|
tmuxの基本操作
セッションの作成と管理
|
|
セッションに名前を付けることで、複数のセッションを管理しやすくなります。
|
|
デタッチとアタッチ
tmuxの真価は、セッションからのデタッチ(離脱)とアタッチ(再接続)にあります。
|
|
セッションの終了
|
|
プレフィックスキーとキーバインド
tmuxのコマンドは、プレフィックスキーに続けて入力します。デフォルトのプレフィックスキーはCtrl+bです。
Ctrl+b [キー]
たとえば、セッションをデタッチするにはCtrl+bを押してからdを押します。
基本的なキーバインド一覧
セッション操作
| キーバインド | 説明 |
|---|---|
Ctrl+b d |
セッションをデタッチ |
Ctrl+b s |
セッション一覧を表示(選択可能) |
Ctrl+b $ |
現在のセッション名を変更 |
Ctrl+b ( |
前のセッションに切り替え |
Ctrl+b ) |
次のセッションに切り替え |
ウィンドウ操作
| キーバインド | 説明 |
|---|---|
Ctrl+b c |
新しいウィンドウを作成 |
Ctrl+b n |
次のウィンドウに切り替え |
Ctrl+b p |
前のウィンドウに切り替え |
Ctrl+b 0-9 |
指定番号のウィンドウに切り替え |
Ctrl+b w |
ウィンドウ一覧を表示(選択可能) |
Ctrl+b , |
現在のウィンドウ名を変更 |
Ctrl+b & |
現在のウィンドウを終了(確認あり) |
Ctrl+b l |
最後に使用したウィンドウに切り替え |
ペイン操作
| キーバインド | 説明 |
|---|---|
Ctrl+b % |
垂直分割(左右に分割) |
Ctrl+b " |
水平分割(上下に分割) |
Ctrl+b 矢印キー |
ペイン間を移動 |
Ctrl+b o |
次のペインに移動 |
Ctrl+b ; |
直前のペインに移動 |
Ctrl+b z |
現在のペインを最大化/元に戻す(ズームトグル) |
Ctrl+b x |
現在のペインを終了(確認あり) |
Ctrl+b { |
ペインを前(左/上)に移動 |
Ctrl+b } |
ペインを後(右/下)に移動 |
Ctrl+b Ctrl+矢印 |
ペインのサイズを調整 |
Ctrl+b Space |
ペインのレイアウトを切り替え |
Ctrl+b q |
ペイン番号を表示 |
その他の操作
| キーバインド | 説明 |
|---|---|
Ctrl+b ? |
キーバインド一覧を表示 |
Ctrl+b : |
コマンドモードに入る |
Ctrl+b [ |
コピーモードに入る |
Ctrl+b t |
時計を表示 |
ペイン分割とレイアウト
tmuxの強力な機能の1つが、ウィンドウを複数のペインに分割できることです。
基本的なペイン分割
graph LR
subgraph Before["分割前"]
A["ペイン"]
end
subgraph VerticalSplit["垂直分割 Ctrl+b %"]
B1["ペイン<br>左"]
B2["ペイン<br>右"]
end
subgraph HorizontalSplit["水平分割 Ctrl+b quote"]
C1["ペイン 上"]
C2["ペイン 下"]
end
Before --> VerticalSplit
Before --> HorizontalSplit
style A fill:#e3f2fd,stroke:#1976d2
style B1 fill:#e8f5e9,stroke:#388e3c
style B2 fill:#e8f5e9,stroke:#388e3c
style C1 fill:#fff3e0,stroke:#f57c00
style C2 fill:#fff3e0,stroke:#f57c00プリセットレイアウト
Ctrl+b Spaceを押すたびに、以下のプリセットレイアウトが順に切り替わります。
| レイアウト名 | 説明 |
|---|---|
| even-horizontal | ペインを水平に均等配置 |
| even-vertical | ペインを垂直に均等配置 |
| main-horizontal | メインペインを上に、残りを下に横並び |
| main-vertical | メインペインを左に、残りを右に縦並び |
| tiled | タイル状に配置 |
コマンドラインからのペイン操作
|
|
ペインのリサイズ
Ctrl+bに続けてCtrl+矢印キーでペインのサイズを調整できます。コマンドモードからも調整可能です。
|
|
コピーモードとスクロール
tmuxではデフォルトでターミナルのスクロールが効かないことがあります。コピーモードを使用することで、過去の出力をスクロールしたり、テキストをコピーしたりできます。
コピーモードの基本操作
Ctrl+b [でコピーモードに入る- 矢印キーまたはvi風キーバインド(h/j/k/l)でカーソル移動
Spaceで選択開始(viモードの場合)Enterで選択範囲をコピーCtrl+b ]でペーストqまたはEscapeでコピーモードを終了
コピーモードのキーバインド(viモード)
| キー | 説明 |
|---|---|
h/j/k/l |
左/下/上/右に移動 |
w/b |
単語単位で前進/後退 |
Ctrl+f/Ctrl+b |
ページダウン/アップ |
g/G |
先頭/末尾に移動 |
/ |
前方検索 |
? |
後方検索 |
n/N |
次/前の検索結果 |
Space |
選択開始 |
Enter |
選択をコピーして終了 |
.tmux.confによるカスタマイズ
tmuxの設定は~/.tmux.confファイルで行います。設定ファイルがない場合は新規作成してください。
基本的な設定例
|
|
直感的なペイン分割キーバインド
|
|
viモードの設定
|
|
ステータスバーのカスタマイズ
|
|
設定の反映
設定ファイルを変更した後、tmux内で以下のコマンドを実行して反映します。
|
|
実践的なtmux活用例
開発作業用のセッション構成
開発時に便利なセッション構成の例を紹介します。
|
|
サーバー監視用のセッション構成
|
|
tmuxとsshの連携
リモートサーバーでの作業時、SSH接続が切断されてもtmuxセッションは維持されます。
|
|
トラブルシューティング
よくある問題と解決方法
問題: 色がおかしい / 256色が表示されない
|
|
また、ターミナルエミュレータの設定でTERMがxterm-256colorになっているか確認してください。
問題: マウスでスクロールできない
|
|
問題: Escapeキーの反応が遅い(特にvim使用時)
|
|
問題: クリップボードにコピーできない(Linux)
|
|
問題: セッションが残っていてtmuxが起動しない
|
|
まとめ
tmuxは、ターミナルでの作業効率を大幅に向上させる強力なツールです。この記事で解説した内容を振り返ります。
| 概念 | 説明 |
|---|---|
| セッション | tmuxの最上位単位。プロジェクトごとに管理 |
| ウィンドウ | セッション内のタブ。用途別に分類 |
| ペイン | ウィンドウ内の分割領域。並行作業に活用 |
| デタッチ/アタッチ | セッションの離脱と再接続。SSH切断時も安心 |
| .tmux.conf | カスタマイズ設定ファイル |
tmuxを使いこなすことで、次のようなメリットが得られます。
- SSH接続が切れても作業を継続できる
- 複数の作業を1つのターミナルで効率的に管理できる
- カスタマイズにより自分好みの作業環境を構築できる
- スクリプトで定型的なセッション構成を自動化できる
まずは基本的なセッション操作とペイン分割から始めて、徐々にカスタマイズを加えていくのがおすすめです。慣れてきたら、開発作業やサーバー管理用のセッション起動スクリプトを作成し、さらなる効率化を目指しましょう。