アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

tmux入門|ターミナルを多重化する設定・操作を初心者にもわかりやすく解説

Featured image of the post

サーバーで長時間かかる処理を流している最中にSSHが切れて、作業がすべて消えてしまった——そんな経験はないでしょうか。あるいは、エディタとログ監視とコマンド実行のために、ターミナルのタブを何枚も行き来して消耗していないでしょうか。

tmux(ティーマックス)は、こうしたターミナル作業のストレスを根本から解消してくれるツールです。1つの画面を自由に分割し、SSHが切れても作業を保持し、いつでも同じ状態に戻れる——一度慣れると、tmuxなしの作業には戻れなくなるほど強力です。

この記事では、tmuxを初めて触る人でも全体像を理解できるように、基本的な概念から導入、日常的に使う操作、そして自分好みに育てる設定ファイルの書き方までを、初心者向けに丁寧に解説していきます。


[目次を開く]

tmuxとは何か

tmuxは「ターミナルマルチプレクサ(terminal multiplexer)」と呼ばれるツールです。マルチプレクサとは「多重化するもの」という意味で、その名のとおり1つのターミナル画面の中に複数の作業スペースを多重化して持てるのがtmuxの役割です。

ふだんターミナルを使っていると、「コマンドを打つ画面」と「ログを眺める画面」と「エディタの画面」を別々のタブやウィンドウで開き、行ったり来たりすることになります。tmuxを使うと、これらを1つの画面の中で分割表示したり、瞬時に切り替えたりできます。

さらに重要なのは、tmuxの作業状態(セッション)はターミナルを閉じても、SSH接続が切れてもサーバー側で生き続けるという点です。あとから同じ状態に「再接続」できるため、リモート作業の安心感が大きく変わります。

なぜtmuxを使うのか

tmuxを使う理由は、大きく3つに整理できます。

1. SSHが切れても作業が消えない

リモートサーバーで時間のかかるビルドやデータ処理を実行しているとき、ネットワークが不安定になってSSHが切断されると、通常はそのプロセスごと失われてしまいます。tmuxの中で実行していれば、接続が切れても処理はサーバー側で動き続け、再接続後に何事もなかったように作業を再開できます。

2. 1画面を自由に分割できる

エディタ・ログ・コマンド実行を縦横に分割して同時に表示できます。タブの切り替えで失われがちな「全体の見通し」を保ったまま作業できるのは、生産性に直結します。

3. 作業環境を再現・永続化できる

「このプロジェクトはエディタとサーバー起動とログの3分割」といったレイアウトを、いつでも同じ形で立ち上げられます。設定ファイルやプラグインを使えば、自分専用の作業環境を育てていけます。

似たツールにscreenがありますが、tmuxはより新しく、画面分割やカスタマイズ性に優れているため、これから学ぶなら基本的にtmuxを選んで問題ありません。

tmuxのインストール

tmuxは主要なOSのパッケージマネージャから簡単に導入できます。お使いの環境に合わせてインストールしてください。

macOSでのインストール

macOSではHomebrewを使うのが最も簡単です。

brew install tmux

Linuxでのインストール

Debian / Ubuntu系ではaptを使います。

sudo apt update
sudo apt install tmux

RHEL / CentOS / Fedora系ではdnf(古い環境ではyum)を使います。

sudo dnf install tmux

WSL(Windows)でのインストール

Windowsでは、WSL(Windows Subsystem for Linux)上のLinuxディストリビューションにインストールするのが一般的です。Ubuntuであれば、Linuxと同じ手順で導入できます。

sudo apt update
sudo apt install tmux

インストールの確認

インストールが終わったら、バージョンを確認しておきましょう。

tmux -V

tmux 3.x のようにバージョンが表示されれば成功です。

tmuxの3つの基本概念:セッション・ウィンドウ・ペイン

tmuxを使いこなすうえで、最初に押さえておきたいのがセッション・ウィンドウ・ペインという3つの階層構造です。この関係さえ理解できれば、tmuxの操作は一気に分かりやすくなります。

graph TD
    S[セッション<br/>作業全体のまとまり] --> W1[ウィンドウ1<br/>タブのようなもの]
    S --> W2[ウィンドウ2]
    W1 --> P1[ペイン<br/>分割された画面]
    W1 --> P2[ペイン]
    W1 --> P3[ペイン]
    W2 --> P4[ペイン]

セッション(Session)

作業全体のまとまりです。tmuxを起動するとまず1つのセッションが作られます。SSHが切れても生き続けるのはこのセッション単位で、プロジェクトごとにセッションを分けるのが基本的な使い方です。

ウィンドウ(Window)

セッションの中にある「タブ」のようなものです。1つのセッションの中に複数のウィンドウを持て、画面下部のステータスバーにタブのように並んで表示されます。

ペイン(Pane)

1つのウィンドウを縦や横に分割した、個々の小さな画面領域です。左にエディタ、右上にサーバー、右下にログ、といったレイアウトはこのペイン分割で実現します。

つまり、セッションの中にウィンドウがあり、ウィンドウの中にペインがあるという入れ子構造になっています。

すべての操作の起点「プレフィックスキー」

tmuxの操作で最も重要なのがプレフィックスキーという考え方です。tmuxへの命令は、ほとんどが「プレフィックスキーを押してから、続けて別のキーを押す」という2段階で行います。

デフォルトのプレフィックスキーは Ctrl + b です。本記事では、これを C-b と表記します。

たとえば「ウィンドウを新しく作る」操作は、次のように行います。

  1. Ctrl を押しながら b を押す(指を離す)
  2. 続けて c を押す

この一連の操作を、本記事では C-b c と書きます。C-b を押した直後は「tmuxがコマンドを待っている状態」になり、そこで押したキーがtmuxへの命令として解釈される、とイメージすると分かりやすいでしょう。

なお、この Ctrl + b は少し押しにくいため、後述する設定ファイルで Ctrl + a などに変更する人が多いです。まずはデフォルトのまま操作に慣れていきましょう。

基本操作①:起動・デタッチ・アタッチ

まずはtmuxの「出入り」を覚えます。ここがtmux最大のメリットである「作業の永続化」の核心です。

tmuxを起動するには、ターミナルで次のコマンドを実行します。

tmux

画面下部に緑色のステータスバーが表示されれば、tmuxのセッションに入った状態です。

セッションから抜けても作業を残しておきたいときは、デタッチ(detach)を使います。C-b d を押すと、セッションを生かしたまま元のターミナルに戻ります。この間、セッション内のプロセスは動き続けています。

デタッチしたセッションに戻る(アタッチ/attach)には、次のコマンドを使います。

tmux attach

複数のセッションを使い分けたい場合は、名前を付けて起動すると管理が楽になります。

# 名前を付けて起動
tmux new -s work

# 名前を指定してアタッチ
tmux attach -t work

現在動いているセッションの一覧は、次のコマンドで確認できます。

tmux ls

起動・デタッチ・アタッチに関する代表的な操作をまとめます。

操作 コマンド/キー
起動 tmux
名前を付けて起動 tmux new -s 名前
デタッチ(抜ける) C-b d
アタッチ(戻る) tmux attach -t 名前
セッション一覧 tmux ls
セッション一覧から選んで切替 C-b s

基本操作②:ウィンドウの操作

ウィンドウは「タブ」のような存在です。役割ごとにウィンドウを分けると、画面がすっきり整理できます。ウィンドウ関連の操作は次のとおりです。

操作 キー
新しいウィンドウを作る C-b c
次のウィンドウへ移動 C-b n
前のウィンドウへ移動 C-b p
番号でウィンドウ移動 C-b 0C-b 9
ウィンドウ名を変更 C-b ,
ウィンドウを閉じる C-b &

作成したウィンドウは、画面下部のステータスバーに番号と名前で並びます。C-b , で分かりやすい名前(例: editorserverlogs)を付けておくと、どのウィンドウが何の作業か一目で分かるようになります。

基本操作③:ペイン分割の操作

tmuxの醍醐味である画面分割です。1つのウィンドウを縦・横に区切り、複数の画面を同時に表示します。

操作 キー
左右に分割(縦線で区切る) C-b %
上下に分割(横線で区切る) C-b "
隣のペインへ移動 C-b 矢印キー
ペインのサイズ変更 C-b を押しながら矢印キー
ペインを閉じる C-b x
ペインを最大化/元に戻す C-b z

C-b %C-b " の記号は少し覚えにくいですが、%(縦棒に見える)で左右分割、"(横向きに見える)で上下分割、と関連づけると覚えやすくなります。

C-b z のペイン最大化(ズーム)は特に便利です。分割した状態で一時的に1つのペインだけ大きく見たいとき、もう一度 C-b z を押せば元の分割レイアウトに戻れます。

コピーモードでスクロール&コピー

tmuxの画面内では、マウスのスクロールがそのままでは効かないことがあります。過去の出力を遡って見たり、テキストをコピーしたりするにはコピーモードを使います。

コピーモードに入るには C-b [ を押します。すると画面内をキーボードで自由に移動できるようになり、矢印キーや PageUp / PageDown で過去の出力をスクロールして確認できます。コピーモードを抜けるには q を押します。

操作 キー
コピーモードに入る C-b [
スクロール 矢印キー / PageUp / PageDown
コピーモードを抜ける q

テキストのコピー操作はキー設定(後述のvi風設定など)によって変わりますが、まずは「C-b [ で過去の出力を遡れる」ことを覚えておけば十分です。

設定ファイル .tmux.conf を書く

tmuxは設定ファイルでカスタマイズすることで、ぐっと使いやすくなります。設定はホームディレクトリの ~/.tmux.conf に記述します。

ここでは、初心者がまず変えておくと快適になる代表的な設定を紹介します。

プレフィックスキーを変更する

デフォルトの Ctrl + b は押しにくいため、Ctrl + a に変更する人が多くいます(screenというツールと同じ操作感になります)。

# デフォルトの C-b を解除し、C-a をプレフィックスにする
unbind C-b
set -g prefix C-a
bind C-a send-prefix

マウス操作を有効にする

マウスでペインの選択・サイズ変更・スクロールができるようになります。初心者にはまず有効化をおすすめします。

set -g mouse on

設定の再読み込みを楽にする

設定ファイルを編集するたびにtmuxを再起動するのは面倒です。C-b r で設定を再読み込みできるようにしておくと便利です。

# プレフィックス + r で設定をリロード
bind r source-file ~/.tmux.conf \; display "Reloaded!"

ウィンドウ番号を1から始める

デフォルトではウィンドウ番号が 0 から始まりますが、キーボードの数字並びに合わせて 1 から始めると押しやすくなります。

set -g base-index 1
set -g pane-base-index 1

そのまま使えるおすすめ初期設定

上記をまとめた、コピペで使える ~/.tmux.conf の例です。まずはこれを置いて、使いながら少しずつ自分好みに育てていくのがおすすめです。

# ---- 基本設定 ----
# プレフィックスを C-a に変更
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# マウス操作を有効化
set -g mouse on

# ウィンドウ・ペイン番号を 1 から開始
set -g base-index 1
set -g pane-base-index 1

# 色を正しく表示する
set -g default-terminal "screen-256color"

# ---- キーバインド ----
# プレフィックス + r で設定をリロード
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# |- で直感的にペイン分割
bind | split-window -h
bind - split-window -v

# ---- コピーモード ----
# vi 風のキー操作にする
setw -g mode-keys vi

設定ファイルを保存したら、すでにtmuxを起動している場合は C-b : のあと source-file ~/.tmux.conf と入力するか、上記設定を入れた後であれば プレフィックス + r で反映できます。

よくあるつまずき(FAQ)

Q. プレフィックスキーを押しても反応しない

C-b は「Ctrlを押しながらb」です。Ctrlを離してから次のキーを押す点に注意してください。Ctrlを押しっぱなしのまま次のキーを押すと、別の操作になってしまうことがあります。

Q. マウスでスクロールできない

デフォルトではマウススクロールが効きません。set -g mouse on を設定ファイルに追加するか、C-b [ でコピーモードに入ってからスクロールしてください。

Q. 色がおかしい・エディタの表示が崩れる

set -g default-terminal "screen-256color" を設定ファイルに追加すると改善することが多いです。

Q. デタッチとセッション終了の違いは?

C-b d(デタッチ)はセッションを生かしたまま抜けるだけで、プロセスは動き続けます。一方、セッション内ですべてのシェルをexitで閉じるとセッション自体が終了し、作業状態は失われます。作業を残したいときは必ずデタッチを使いましょう。

まとめ

tmuxは、ターミナル作業を「多重化」することで、リモート作業の安心感と画面の見通しを劇的に向上させてくれるツールです。

最初に押さえるべきポイントは次の3つです。

  • セッション・ウィンドウ・ペインの入れ子構造を理解する
  • すべての操作はプレフィックスキー(C-b)から始まる
  • デタッチ/アタッチでSSHが切れても作業を保持できる

まずはデフォルト設定のまま、起動・デタッチ・アタッチと画面分割に慣れることから始めてみてください。操作に手が馴染んできたら、~/.tmux.conf を少しずつ書き換えて、自分だけの快適な作業環境に育てていきましょう。一度tmuxの便利さを体験すると、もう手放せなくなるはずです。

プログラミング学習でつまずいていませんか?

独学で挫折しそうな方も、プロのメンターがしっかりサポートします。

  • プログラミング学習の進め方がわからない
  • 独学で行き詰まった時の質問相手がほしい
  • 何から始めればいいかわからない
まずは30分の無料相談

相談は完全無料・オンラインで気軽に

あなたを爆速で成長させるメンタリングプログラムはこちら

メンタープログラムバナー

学習・開発のお悩みは現役エンジニアに相談

メンタープログラムの詳細を見る

エンジニアの基礎学習ゲーム

プログラミング学習支援

無料相談はこちら