tmux完全マスター - ショートカット一覧と効率的なターミナル操作術
tmuxの基本から応用まで、よく使うショートカットを体系的に整理。セッション管理、ウィンドウ操作、ペイン分割など、開発効率を2倍にするターミナル環境の構築方法を詳しく解説します。
約5分で読めます
技術記事
実践的
この記事のポイント
tmuxの基本から応用まで、よく使うショートカットを体系的に整理。セッション管理、ウィンドウ操作、ペイン分割など、開発効率を2倍にするターミナル環境の構築方法を詳しく解説します。
この記事では、実践的なアプローチで技術的な課題を解決する方法を詳しく解説します。具体的なコード例とともに、ベストプラクティスを学ぶことができます。
要約
本記事では、ターミナルマルチプレクサ「tmux」のショートカットキーを体系的に整理し、効率的な使い方を詳しく解説します。tmuxをマスターすることで、複数のターミナル作業を同時に行い、開発効率を大幅に向上させることができます。基本操作から高度なカスタマイズまで、実践的な内容を含めて紹介します。
読者が得られる知識:
- tmuxの基本概念と構造
- よく使用するショートカットキーの完全一覧
- 効率的なワークフローの構築方法
- カスタム設定とプラグイン活用
想定読者レベル: 初級〜中級 所要時間: 12分
目次
tmuxの基本概念
セッション、ウィンドウ、ペインの関係
tmuxは3つの階層構造で構成されています:
Session (セッション)
├── Window 1 (ウィンドウ1)
│ ├── Pane 1 (ペイン1)
│ └── Pane 2 (ペイン2)
├── Window 2 (ウィンドウ2)
│ ├── Pane 1
│ ├── Pane 2
│ └── Pane 3
└── Window 3 (ウィンドウ3)
└── Pane 1
各要素の役割
要素 | 役割 | 例 |
---|---|---|
Session | 作業プロジェクト全体 | ”webapp-dev”, “database-admin” |
Window | 作業の種類 | ”editor”, “server”, “logs” |
Pane | 個別のターミナル | vim, npm run dev, tail -f |
プレフィックスキーについて
tmuxの全ての操作は プレフィックスキー を先に押してから実行します。
デフォルトのプレフィックスキー: Ctrl + b
プレフィックスキーの使い方
# 例: 新しいウィンドウを作成
1. Ctrl + b を押す(プレフィックス)
2. c を押す(コマンド)
# 表記: Prefix + c
基本ショートカット
セッション操作
セッションの作成・接続・切断
操作 | コマンド | ショートカット |
---|---|---|
セッション作成 | tmux new -s session_name | - |
セッション一覧 | tmux ls | - |
セッション接続 | tmux attach -t session_name | - |
セッション切断 | - | Prefix + d |
セッション強制終了 | tmux kill-session -t session_name | - |
実践例
# 開発用セッションを作成
tmux new -s webapp-dev
# バックグラウンドでセッションを作成
tmux new -s database -d
# セッション一覧を確認
tmux ls
# 出力例:
# webapp-dev: 3 windows (created Wed Dec 20 10:00:00 2023)
# database: 1 windows (created Wed Dec 20 10:01:00 2023)
# セッションに再接続
tmux attach -t webapp-dev
ウィンドウ操作
基本的なウィンドウ操作
操作 | ショートカット | 説明 |
---|---|---|
新しいウィンドウ作成 | Prefix + c | Create window |
ウィンドウ切り替え | Prefix + 0-9 | 番号指定で切り替え |
次のウィンドウ | Prefix + n | Next window |
前のウィンドウ | Prefix + p | Previous window |
最後のウィンドウ | Prefix + l | Last window |
ウィンドウ一覧 | Prefix + w | Window list |
ウィンドウ名変更 | Prefix + , | Rename window |
ウィンドウ終了 | Prefix + & | Kill window |
ウィンドウ管理の実践
# 開発環境のセットアップ例
tmux new -s project
# 1. エディタ用ウィンドウ (Window 0)
# デフォルトで作成される
# 2. サーバー用ウィンドウ (Window 1)
Prefix + c # 新規ウィンドウ作成
Prefix + , # ウィンドウ名を "server" に変更
# 3. ログ監視用ウィンドウ (Window 2)
Prefix + c # さらに新規ウィンドウ作成
Prefix + , # ウィンドウ名を "logs" に変更
# ウィンドウ間を素早く移動
Prefix + 0 # エディタウィンドウ
Prefix + 1 # サーバーウィンドウ
Prefix + 2 # ログウィンドウ
ペイン操作
ペインの分割
操作 | ショートカット | 説明 |
---|---|---|
水平分割 | Prefix + " | 上下に分割 |
垂直分割 | Prefix + % | 左右に分割 |
ペイン切り替え | Prefix + o | 次のペイン |
ペイン番号表示 | Prefix + q | 番号で選択可能 |
ペイン終了 | Prefix + x | 確認後終了 |
ペインズーム | Prefix + z | フルスクリーン切り替え |
方向キーでのペイン移動
操作 | ショートカット |
---|---|
上のペイン | Prefix + ↑ |
下のペイン | Prefix + ↓ |
左のペイン | Prefix + ← |
右のペイン | Prefix + → |
ペインサイズ調整
操作 | ショートカット |
---|---|
上に拡大 | Prefix + Ctrl + ↑ |
下に拡大 | Prefix + Ctrl + ↓ |
左に拡大 | Prefix + Ctrl + ← |
右に拡大 | Prefix + Ctrl + → |
実践的なペイン分割例
# 理想的な開発レイアウト
┌─────────────────┬─────────────────┐
│ │ │
│ Editor │ Terminal │
│ (Vim/VS) │ (git, npm) │
│ │ │
├─────────────────┼─────────────────┤
│ │ │
│ Log Monitor │ Server Debug │
│ (tail -f log) │ (node debug) │
│ │ │
└─────────────────┴─────────────────┘
作成手順:
1. Prefix + " # 水平分割
2. Prefix + % # 右ペインを垂直分割
3. Prefix + ↑ # 上のペインに移動
4. Prefix + % # 上のペインを垂直分割
応用ショートカット
コピー・ペースト
コピーモード
操作 | ショートカット | 説明 |
---|---|---|
コピーモード開始 | Prefix + [ | スクロール・選択可能 |
選択開始 | Space | コピーモード内 |
選択終了・コピー | Enter | クリップボードに保存 |
ペースト | Prefix + ] | 最後のコピー内容 |
コピーモード終了 | q または Escape | 通常モードに戻る |
コピーモード内の移動
操作 | キー | 説明 |
---|---|---|
上下移動 | ↑ ↓ または j k | 行単位 |
左右移動 | ← → または h l | 文字単位 |
単語移動 | w b | 単語単位 |
行頭・行末 | 0 $ | 行の端 |
ページ移動 | Ctrl+u Ctrl+d | 半ページ単位 |
レイアウト操作
プリセットレイアウト
操作 | ショートカット | レイアウト |
---|---|---|
レイアウト1 | Prefix + Space | 順次切り替え |
Even-horizontal | Prefix + Alt + 1 | 水平均等分割 |
Even-vertical | Prefix + Alt + 2 | 垂直均等分割 |
Main-horizontal | Prefix + Alt + 3 | メイン+水平 |
Main-vertical | Prefix + Alt + 4 | メイン+垂直 |
Tiled | Prefix + Alt + 5 | タイル状配置 |
ペインの移動・交換
操作 | ショートカット | 説明 |
---|---|---|
ペイン順序変更 | Prefix + { | 前方へ移動 |
ペイン順序変更 | Prefix + } | 後方へ移動 |
ペイン位置交換 | Prefix + Ctrl + o | 全体をローテーション |
設定とカスタマイズ
設定の再読み込み
# 設定ファイル編集後の再読み込み
Prefix + : # コマンドライン起動
source-file ~/.tmux.conf # 設定再読み込み
よく使う設定コマンド
操作 | ショートカット | 説明 |
---|---|---|
コマンドライン | Prefix + : | tmuxコマンド実行 |
時刻表示 | Prefix + t | 大きな時計表示 |
セッション選択 | Prefix + s | セッション一覧 |
クライアント一覧 | Prefix + D | 接続クライアント |
効率的なワークフロー
開発環境の構築
プロジェクト専用セッションの作成
#!/bin/bash
# dev-setup.sh - 開発環境自動セットアップスクリプト
SESSION_NAME="webapp-dev"
# セッションが既に存在する場合は接続
if tmux has-session -t $SESSION_NAME 2>/dev/null; then
tmux attach-session -t $SESSION_NAME
exit
fi
# 新しいセッションを作成
tmux new-session -d -s $SESSION_NAME
# Window 0: Editor
tmux rename-window -t $SESSION_NAME:0 'editor'
tmux send-keys -t $SESSION_NAME:0 'cd ~/projects/webapp && vim .' Enter
# Window 1: Server
tmux new-window -t $SESSION_NAME:1 -n 'server'
tmux send-keys -t $SESSION_NAME:1 'cd ~/projects/webapp && npm run dev' Enter
# Window 2: Database & Logs
tmux new-window -t $SESSION_NAME:2 -n 'monitoring'
tmux split-window -h -t $SESSION_NAME:2
tmux send-keys -t $SESSION_NAME:2.0 'cd ~/projects/webapp && npm run db:watch' Enter
tmux send-keys -t $SESSION_NAME:2.1 'cd ~/projects/webapp && tail -f logs/app.log' Enter
# セッションに接続
tmux attach-session -t $SESSION_NAME
一日の作業パターン
# 朝の作業開始
tmux attach -t work-session || tmux new -s work-session
# 作業中の画面共有(リモートペアプログラミング)
tmux new -s shared-session
# 別のユーザー: tmux attach -t shared-session
# 休憩時(セッションを保持したまま切断)
Prefix + d
# 終業時(全セッションの確認と整理)
tmux ls # セッション一覧確認
tmux kill-session -t temp # 不要なセッション削除
セッション管理のベストプラクティス
命名規則
# プロジェクト別
tmux new -s webapp-frontend
tmux new -s webapp-backend
tmux new -s mobile-app
# 作業別
tmux new -s development
tmux new -s debugging
tmux new -s deployment
# 顧客・案件別
tmux new -s client-a-project
tmux new -s maintenance-tasks
マルチプロジェクト管理
# プロジェクト切り替えスクリプト
switch_project() {
local project=$1
if tmux has-session -t $project 2>/dev/null; then
tmux switch-client -t $project
else
echo "Session $project not found"
tmux ls
fi
}
# 使用例
switch_project webapp-dev
設定ファイルのカスタマイズ
基本設定
~/.tmux.conf の推奨設定
# プレフィックスキーの変更(Ctrl+bからCtrl+aに)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# ウィンドウ番号を1から開始
set -g base-index 1
setw -g pane-base-index 1
# マウス操作を有効化
set -g mouse on
# ペイン分割のキーバインドを直感的に変更
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
# ペイン移動をVimライクに
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# ペインサイズ調整をVimライクに
bind H resize-pane -L 5
bind J resize-pane -D 5
bind K resize-pane -U 5
bind L resize-pane -R 5
# 設定ファイルの再読み込み
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
# コピーモードをViライクに
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection
bind-key -T copy-mode-vi r send-keys -X rectangle-toggle
# ウィンドウのアクティビティ監視
setw -g monitor-activity on
set -g visual-activity on
# ステータスバーのカスタマイズ
set -g status-bg black
set -g status-fg white
set -g status-left-length 20
set -g status-left '#[fg=green][#S] '
set -g status-right '#[fg=yellow]#(uptime | cut -d "," -f 2-)'
# 256色対応
set -g default-terminal "screen-256color"
プラグイン活用
TPM (Tmux Plugin Manager) のセットアップ
# TPMのインストール
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# ~/.tmux.conf に追加
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'
# Initialize TMUX plugin manager (keep this line at the very bottom)
run '~/.tmux/plugins/tpm/tpm'
おすすめプラグイン
プラグイン | 機能 | 設定例 |
---|---|---|
tmux-resurrect | セッション保存・復元 | Prefix + Ctrl + s (保存) |
tmux-continuum | 自動保存 | set -g @continuum-restore 'on' |
tmux-yank | システムクリップボード連携 | y でコピー |
tmux-pain-control | ペイン操作改善 | 直感的なペイン移動 |
プラグインの使用例
# セッション保存・復元のワークフロー
Prefix + Ctrl + s # 現在の状態を保存
# PCを再起動
tmux # tmux起動
Prefix + Ctrl + r # 前回の状態を復元
トラブルシューティング
よくある問題と解決方法
1. tmuxが起動しない
# エラーメッセージの確認
tmux -V # バージョン確認
tmux new -s test # エラーメッセージを確認
# 設定ファイルの問題の場合
tmux -f /dev/null # 設定なしで起動
2. コピー・ペーストが動作しない
# クリップボード連携の確認
which pbcopy pbpaste # macOS
which xclip xsel # Linux
# 設定の追加
# macOS
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
# Linux
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
3. 文字化けの問題
# 環境変数の確認
echo $LANG
echo $LC_ALL
# .tmux.conf に追加
set -g default-terminal "screen-256color"
set -g terminal-overrides 'xterm:colors=256'
4. セッションが勝手に終了する
# セッションが終了しないように設定
set -g exit-empty off # 空のセッションも保持
set -g destroy-unattached off # デタッチ時に破棄しない
デバッグテクニック
tmux情報の確認
# 現在の設定値確認
tmux show-options -g # グローバル設定
tmux show-options -g -s # サーバー設定
tmux list-keys # キーバインド一覧
# セッション・ウィンドウ・ペイン情報
tmux display-message -p '#S:#I:#P' # セッション:ウィンドウ:ペイン
まとめ
tmuxは強力なターミナルマルチプレクサとして、開発効率を大幅に向上させるツールです。今回紹介したショートカットと設定を活用することで、より快適な開発環境を構築できます。
重要なポイント:
- 基本操作の習得: セッション、ウィンドウ、ペインの概念を理解
- ショートカットの暗記: 頻繁に使用する操作は手に覚えさせる
- 設定のカスタマイズ: 自分の作業スタイルに合わせて調整
- 継続的な改善: 新しい機能やプラグインを定期的に検討
次のステップ:
- 基本的なショートカットを1週間練習
- 自分専用の設定ファイルを作成
- プロジェクト別のセットアップスクリプト作成
- チーム内でのtmux活用法を共有
関連リソース:
tmuxをマスターして、効率的な開発ライフを送りましょう!