DT Tools tmux ショートカット

tmux完全マスター - ショートカット一覧と効率的なターミナル操作術

tmuxの基本から応用まで、よく使うショートカットを体系的に整理。セッション管理、ウィンドウ操作、ペイン分割など、開発効率を2倍にするターミナル環境の構築方法を詳しく解説します。

約5分で読めます
技術記事
実践的

この記事のポイント

tmuxの基本から応用まで、よく使うショートカットを体系的に整理。セッション管理、ウィンドウ操作、ペイン分割など、開発効率を2倍にするターミナル環境の構築方法を詳しく解説します。

この記事では、実践的なアプローチで技術的な課題を解決する方法を詳しく解説します。具体的なコード例とともに、ベストプラクティスを学ぶことができます。

要約

本記事では、ターミナルマルチプレクサ「tmux」のショートカットキーを体系的に整理し、効率的な使い方を詳しく解説します。tmuxをマスターすることで、複数のターミナル作業を同時に行い、開発効率を大幅に向上させることができます。基本操作から高度なカスタマイズまで、実践的な内容を含めて紹介します。

読者が得られる知識:

  • tmuxの基本概念と構造
  • よく使用するショートカットキーの完全一覧
  • 効率的なワークフローの構築方法
  • カスタム設定とプラグイン活用

想定読者レベル: 初級〜中級 所要時間: 12分

目次

  1. tmuxの基本概念

  2. 基本ショートカット

  3. 応用ショートカット

  4. 効率的なワークフロー

  5. 設定ファイルのカスタマイズ

  6. トラブルシューティング

  7. まとめ


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 + cCreate window
ウィンドウ切り替えPrefix + 0-9番号指定で切り替え
次のウィンドウPrefix + nNext window
前のウィンドウPrefix + pPrevious window
最後のウィンドウPrefix + lLast window
ウィンドウ一覧Prefix + wWindow 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半ページ単位

レイアウト操作

プリセットレイアウト

操作ショートカットレイアウト
レイアウト1Prefix + Space順次切り替え
Even-horizontalPrefix + Alt + 1水平均等分割
Even-verticalPrefix + Alt + 2垂直均等分割
Main-horizontalPrefix + Alt + 3メイン+水平
Main-verticalPrefix + Alt + 4メイン+垂直
TiledPrefix + 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. 基本操作の習得: セッション、ウィンドウ、ペインの概念を理解
  2. ショートカットの暗記: 頻繁に使用する操作は手に覚えさせる
  3. 設定のカスタマイズ: 自分の作業スタイルに合わせて調整
  4. 継続的な改善: 新しい機能やプラグインを定期的に検討

次のステップ:

  • 基本的なショートカットを1週間練習
  • 自分専用の設定ファイルを作成
  • プロジェクト別のセットアップスクリプト作成
  • チーム内でのtmux活用法を共有

関連リソース:

tmuxをマスターして、効率的な開発ライフを送りましょう!