tmuxは、1つのターミナルから複数のShellや長時間実行する処理を管理するターミナルマルチプレクサーです。SSH接続が切れたり、ターミナルウィンドウを閉じたりしても、tmuxセッション内の処理を継続できます。
1. インストール#
# macOS
brew install tmux
# Ubuntu/Debian
sudo apt update
sudo apt install tmux
# Arch Linux
sudo pacman -S tmuxtmux -V2. 3つの階層#
tmuxの構造は次のとおりです。
tmux server
└── session(セッション)
└── window(ウィンドウ)
└── pane(ペイン)- Session:プロジェクトや作業単位の大きな入れ物。
- Window:ブラウザーのタブに近い単位。
- Pane:1つのWindow内を分割した端末領域。
3. セッションを作成、デタッチ、再接続する#
tmux new -s worktmuxの中で、次のキーを順番に押すとセッションからデタッチできます。
Ctrl-b dセッション自体は終了せず、バックグラウンドで処理を続けます。
tmux ls
tmux attach -t work
ターミナルのウィンドウを閉じることと、tmuxセッションを終了することは別です。セッションを終了するには、ペインでexitを実行するか、tmux kill-session -t workを使います。
4. ウィンドウ操作#
デフォルトのPrefixキーはCtrl-bです。Prefixを押した後、次のキーを押します。
| キー | 動作 |
| --- | --- |
| Ctrl-b c | 新しいWindowを作る |
| Ctrl-b n | 次のWindowへ移動 |
| Ctrl-b p | 前のWindowへ移動 |
| Ctrl-b w | Window一覧を表示 |
| Ctrl-b , | Window名を変更 |
| Ctrl-b & | 現在のWindowを終了 |
tmux new-window -n editor5. ペインを分割する#
| キー | 動作 |
| --- | --- |
| Ctrl-b % | 左右に分割 |
| Ctrl-b " | 上下に分割 |
| Ctrl-b o | 次のPaneへ移動 |
| Ctrl-b 矢印キー | 指定方向のPaneへ移動 |
| Ctrl-b x | 現在のPaneを終了 |
| Ctrl-b z | Paneを最大化・復元 |
tmux split-window -h6. Prefixキーとキーバインド#
現在のキーバインドは次で確認できます。
tmux list-keys -T prefix
tmux list-keys -T copy-modePrefixキーをCtrl-aへ変更する設定例です。
# ~/.tmux.conf
set -g prefix C-a
unbind C-b
bind C-a send-prefix設定を再読み込みします。
tmux source-file ~/.tmux.conf7. コピーとスクロール#
コピー・モードへ入ります。
Ctrl-b [矢印キーやPageUpで移動し、Spaceで選択を開始し、Enterでコピーします。通常の端末へ戻るにはqを押します。コピーした内容を貼り付けるにはCtrl-b ]を使います。
vi風の操作を使いたい場合は、設定へ次を追加します。
setw -g mode-keys vi8. 同じ入力を複数Paneへ送る#
tmux setw synchronize-panes on
tmux setw synchronize-panes off同期入力を有効にすると、入力した文字列が複数Paneへ同時に送られます。破壊的なコマンドを実行する前に、同期状態を確認してください。
9. セッションを保存・復元する#
tmuxセッションは通常、サーバーを再起動すると失われます。長期的に復元したい場合は、tmux-resurrectやtmux-continuumなどのプラグインを検討します。
tmux list-sessions
tmux list-windows -t work
tmux list-panes -t work10. よくあるトラブル#
- no server running:tmuxセッションが存在しない。tmux new -s workで作成する。
- no sessions:指定した名前のセッションがない。tmux lsで確認する。
- キーが反応しない:Prefixを先に押し、tmux list-keysで設定を確認する。
- 画面が狭い:Paneを閉じる、最大化する、またはresize-paneを使う。
- SSHが切れた:再接続後にtmux attach -t workを実行する。
まとめ#
tmuxで最初に覚えるべき流れは次の4つです。
tmux new -s work
# Ctrl-b dでデタッチ
tmux ls
tmux attach -t workSession、Window、Paneを分けて使うと、編集、サーバー、ログ監視を1つのターミナルで安定して管理できます。


