ターミナルの生産性を高めるTmuxの個人設定
0. なぜTmuxを使うべきか? (Why Tmux?)
ターミナルを**「Webブラウザ」**に例えると理解が早いです。
マルチタスキング(タブとウィンドウ) ブラウザでタブを複数開いて検索、YouTube、メールを同時に見るように、Tmuxは一つのターミナルウィンドウ内でサーバー実行、コード修正、ログ確認を同時に行えるようにしてくれます。
セッション維持(安全装置)
最も強力な機能です。リモートサーバーで作業中にインターネットが切れたり、誤ってターミナルを閉じても、Tmuxセッションはバックグラウンドで生き続けます。再接続(attach)すれば、作業していた姿そのままで復元されます。
用語
-
セッション (Session)
- ブラウザウィンドウ全体と同じです。
Aプロジェクト、Bプロジェクトを別々に開くように、作業の大きな文脈を丸ごと入れておく最大の器です。
-
ウィンドウ (Window)
- ブラウザの**「タブ(Tab)」**と同じです。
- 一つのセッション内でサーバー(1番)、DB(2番)のように用途別に画面を切り替えながら使用する空間です。
-
ペイン (Pane)
- タブ一つを上下左右に分割した画面です。
- 一つのウィンドウ内で左はエディタ、右はログを同時に表示して見る分割された領域です。
1. インストールおよび必須プラグイン (Installation)
Mac(Homebrew)環境基準。基本インストール後、**TPM(Tmux Plugin Manager)**までインストールしてこそ、強力な機能を100%活用できます。
1. Tmuxインストール
brew install tmux2. プラグインマネージャー(TPM)インストール
様々なプラグインを簡単に管理するために必須です。
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm2. 実務最適化設定
(.tmux.conf)
基本Tmux設定(プレフィックスキーC+bが遠くて不便)を実務に合わせて変更しました。
vi ~/.tmux.confファイルを作成し、以下の内容をそのまま入れます。
# ==========================================
# 1. 基本利便性設定
# ==========================================
# Prefixキー変更 (基本Ctrl+bは手が絡まる -> Ctrl+aに変更)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# マウス使用許可 (ウィンドウサイズ調整、スクロールなど)
set -g mouse on
# インデックス設定 (キーボード0番は遠すぎるので1番から開始)
set -g base-index 1
set -g pane-base-index 1
set -g renumber-windows on # ウィンドウを閉じると番号自動整列
# ==========================================
# 2. キーバインディング (Key Bindings)
# ==========================================
# 直感的な画面分割 (現在のパスを維持して分割)
# | : 左右分割
# - : 上下分割
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Vimスタイルコピーモード (v:選択, y:コピー)
set-window-option -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-and-cancel
# ==========================================
# 3. プラグイン (Plugins)
# ==========================================
# VimとTmux間の移動を統合 (Ctrl+hjkl)
set -g @plugin 'christoomey/vim-tmux-navigator'
# 必須プラグインロード
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
# TPM実行 (必ずファイルの最後に位置)
run '~/.tmux/plugins/tpm/tpm'-
プラグイン管理者 (TPM)
- スマートフォンのApp Storeのような役割です。複雑な手動設定なしで、ショートカットキー(
Ctrl + a + I)一回で必要なプラグインを即座にインストールしてアップデートできるようにしてくれる核心ツールです。
- スマートフォンのApp Storeのような役割です。複雑な手動設定なしで、ショートカットキー(
-
必須最適化 (Sensible)
- 純正状態の苦しいキー入力遅延(Esc)や画面出力速度問題を解決して環境をセッティングしてくれます。
設定適用方法:
- 上記のファイルを保存します。
- ターミナルで
tmux source ~/.tmux.confを入力します。- Tmux実行後、**
Ctrl + aを押してI(大文字i)**を押してプラグインをインストールします。
3. スマート実行関数
t
毎回tmux new -s ...を打つのは面倒です。**「なければ作り、あれば接続する」**短縮コマンドをシェル設定ファイル(~/.zshrcなど)に追加します。
Bash
# t [名前] : 該当セッションがあれば接続、なければ生成
function t() {
if [ -z "$1" ]; then
# 名前なしで't'だけ打つと'main'セッションに接続
tmux new -A -s main
else
# 't プロジェクト名'と打つと該当セッションに接続
tmux new -A -s "$1"
fi
}- 使用法: "Hello"セッションを作りたい? -> ターミナルで
t Helloと打てば終わり。
4. 核心ショートカットキーチートシート (Cheatsheet)
すべてのコマンドは**Prefix(Ctrl + a)**を先に押してから入力します。
| 区分 | ショートカットキー (Ctrl + a 後) | 説明 |
|---|---|---|
| セッション | s |
セッション一覧表示/移動/削除(x) (最も重要) |
d |
セッションから出る (Detach, バックグラウンド維持) | |
$ |
現在のセッション名変更 | |
| ウィンドウ | c |
新しいウィンドウ(タブ)生成 |
, |
ウィンドウ名変更 | |
n / p |
次 / 前のウィンドウ移動 | |
| ペイン | ` |
バッククォート |
- |
画面上下分割 | |
z |
現在のペイン全画面拡大/復元 (Zoom) | |
| 移動 | Ctrl + h,j,k,l |
ペイン間移動 (Prefixなしですぐ移動) |
5. トラブルシューティング: 右移動(Ctrl+l)ができない時
Tip マウスを使用しないキーボード中心環境で重要です
設定を完璧にしたのに**「左(Ctrl+h)はできるのに右(Ctrl+l)に移動できない現象」**が発生することがあります。
原因: ターミナル衝突
UnixシステムでCtrl + lは**「画面クリア(Clear)」コマンドです。TmuxやVimが信号を受け取る前に、使用中のターミナルアプリ(iTerm2, Alacrittyなど)がこのキーを先に横取りして**発生する問題です。
診断方法 (catテスト)
犯人を確実に捕まえるためにターミナルで以下を実行。
- どのシェルでも
catを入力してエンター(入力待機状態)。 Ctrl + lを押します。- 画面に
^Lが表示される? → 正常(ターミナル問題なし)。Ctrl + lを押した時に^Lが表示されるのは、シェルが該当キー入力を「リテラル(文字)」として認識したという意味です。
- 画面がさっと消える? → 犯人検挙(ターミナルがキーを横取り)。
- 画面に
解決方法
ターミナル設定でCtrl + lマッピングを解除する必要があります。
-
iTerm2:
Settings>Profiles>Keys>Key Mappingsで^l項目削除。 -
Alacritty/Zsh: シェル設定(
~/.zshrc)に以下のコードを追加してキーバインディングを解除します。
Ctrl+l バインディング解除 (Vim/Tmuxに譲歩)
bindkey -r "^L"Log
- • 2026-01-23: fleeting