tmuxを見やすく、使いやすくする方法(2024)
(hamvocke.com)~/.tmux.conf設定ファイルを通じて、キーバインド、色、ステータスバー、マウス動作 などを自由に調整できる- デフォルトの Prefix キー
C-bをC-aに変更 し、Caps Lock を Ctrl にリマップすることで入力効率を高められる - ウィンドウ分割を
"、%の代わりに|、-キーで直感的に実行 し、rキーで設定ファイルをすぐに再読み込みできる - Alt + 矢印キーでペインを切り替え、マウスモードの有効化、ウィンドウ名の自動変更停止などにより操作性を向上できる
- 色、ステータスバー、メッセージ、枠線など 視覚要素を細かく整えて一貫したテーマ構成 を実現できる
tmux をカスタマイズする基本概念
- tmux の設定ファイル は
tmux.confで、ユーザーのホームディレクトリの~/.tmux.confに置くと個人設定として適用される- 複数ユーザーで共有する場合はシステム全体のディレクトリに置くこともでき、場所は OS によって異なる
- 正確な場所は
man tmuxの-fオプションの説明で確認できる
- 設定ファイルを編集して キーバインド、色、ステータスバー、マウス動作など を自由に変更できる
より扱いやすい Prefix キー設定
- デフォルトの Prefix キー
C-bを、より押しやすいC-aに変更できるC-aは bash の「行頭へ移動」コマンドと衝突する可能性がある- Caps Lock キーを Ctrl にリマップすると Prefix の組み合わせをより簡単に入力できる
- 設定例は次のとおり
unbind C-b set-option -g prefix C-a bind-key C-a send-prefix C-a C-aで従来の bash コマンドも引き続き使える
直感的なウィンドウ分割コマンド
- デフォルトの分割キー
"、%の代わりに 視覚的に直感的な|、-を使う|は水平分割、-は垂直分割に設定する- 既存のキーバインドは解除する
bind | split-window -h bind - split-window -v unbind '"' unbind %
設定ファイルのすばやい再読み込み
tmux.confを頻繁に編集する場合は ショートカットで即座に再読み込み できるrキーに設定ファイルの再適用コマンドを割り当てる
bind r source-file ~/.tmux.conf
すばやいペイン切り替え
- Alt(Meta)キー + 矢印キー で Prefix なしにペインを移動できる
Alt-Left、Alt-Right、Alt-Up、Alt-Downでそれぞれ移動する
bind -n M-Left select-pane -L bind -n M-Right select-pane -R bind -n M-Up select-pane -U bind -n M-Down select-pane -D
マウスモードの有効化
- マウスでウィンドウ選択やペインサイズ調整 が可能になる
- キーボード中心の利用が基本だが、共同作業時に便利
- ペアプログラミングなどでよく活用できる
set -g mouse on
ウィンドウ名の自動変更を停止
- 手動で指定したウィンドウ名が コマンド実行時に自動で上書きされる現象を防止 する
set-option -g allow-rename off
tmux の見た目を変更する
- 色、ステータスバー、メッセージ、ペイン枠線など を細かく調整できる
STYLESセクションを参照すると、さまざまな視覚要素を設定できる- 標準のターミナル色(
red、yellow、blackなど)を使うとテーマになじみやすい - 256 色モードでは
colour0〜colour256を指定できる
- 設定例には次の項目が含まれる
-
ベル通知の無効化、時計の色を yellow、コピーモードのスタイルを fg=black bg=red bold に設定
-
ペイン枠線の色を red、アクティブなペイン枠線を yellow に設定
-
ステータスバーの位置を bottom、左側に余白、右側に時刻表示を設定
-
現在のウィンドウスタイルを fg=black bg=red、通常ウィンドウスタイルを fg=red bg=black に設定
- メッセージスタイル fg=yellow bg=red bold
- これらの設定により、一貫した配色と視覚的な区別 を提供できる
-
追加の参考資料
- さまざまな tmux 設定例 は GitHub の
tmux.confやdotfilesリポジトリで確認できる- Reddit の
/r/dotfiles、/r/unixpornも参考になる
- Reddit の
- 全体の設定は GitHub dotfiles リポジトリ で公開されている
- さらに学ぶには tmux の man ページ と tmux wiki の Configuring tmux セクション の参照がおすすめ
- 最新機能と詳細なオプションを幅広く扱っている
- ターミナルのカラーテーマを自分で設計するなら Root Loops(https://rootloops.sh/) を利用できる
- 個人向けにカスタマイズしたターミナル配色をサポートする
1件のコメント
Hacker Newsのコメント
以前は tmux を使っていたが、Zellij を見つけてからは完全に乗り換えた。
タブやパネルの設定がずっと直感的で、マウスでスクロールやテキスト選択がしやすく、コピー&ペーストも簡単
ボタンリンクだと右クリックでコピーできないし、アクセシビリティの面でもよくない
tmux では 1〜2 分おきにこの機能を使っているが、Zellij の開発者はデータをエディタにパイプしろと言うものの、システムクリップボードとは互換性がない。
そのため結局 tmux に戻った
Zellij は約 50MB だが、tmux は依存ライブラリ込みでも 2MB 程度なので、容量差が大きい
Zellij がだんだん肥大化して扱いづらくなり、今は tmuxp でセッションを構成し、autossh で接続を維持していて、そのほうがずっと満足している
キーバインドの話をすると、^a は screen、^b は tmux の伝統。
複数のシステムを扱う管理者なら、デフォルトのキーマップを覚えることが重要だ。
個人設定では色、アクティブパネルの背景、タイムスタンプ時計、マウス有効化くらいしか変えておらず、キーバインドはそのままにしている。
慣れてしまえばデフォルトのほうがむしろ使いやすい
Shift+Enter が効かなくて tmux を諦め、Zellij に移っていた。
だが Zellij がpanic クラッシュでプロセスを吹き飛ばしたので、結局 tmux に戻った。
解決策は
"bind-key -T root S-Enter send-keys C-j"で、この issueで見つけた"bind -n S-Enter send-keys Escape '[13;2u'"で解決した。pi.dev は extended-keys 設定がないと警告するが、ちゃんと動いている
tmux ではサーバーを落とすと配下のプロセスも片付くので便利だった
\ + Enterの組み合わせでもできるtmux のControl Modeを知ってから、完全にゲームチェンジャーになった。
iTerm2 で
tmux -CCを実行すると、タブ、スクロール、コピー&ペースト、ショートカットなどがターミナルネイティブに動作する。タブも視覚的に全部見えるし、特に初心者には便利
自分は tmux で Alt+数字による高速ウィンドウ切り替えを使っている。
例:
bind-key -n M-1 select-window -t :1のように設定する。Alt-/ で vi スタイルのコピーモードを開くこともできる。
Wayland 環境では
wl-copyを使えば、マウスドラッグやyキーでコピー可能。Powerline 風のデザインも追加したが、powerline-fonts が必要
tmux をカスタマイズしすぎたせいで、新しいサーバーに ssh 接続すると基本的な使い方を忘れてしまう。
今はデフォルト設定で使っている。ただしマウススクロール設定だけは毎回変えなければならない
関連する概念として The Lisp Curse もある
たとえば Ctrl-b はそのままにして、Ctrl-space を追加ショートカットにしている
iTerm2 での tmux の Control Mode には感心した。
ローカルのウィンドウマネージャとしてリモート端末のウィンドウを制御できる。
ghostty でもその機能の実装が進んでいるようで期待している
tmux のデフォルトプレフィックスキー (C-b) は awkward だという意見が多いが、自分はむしろその押しにくさが利点だと思っている。
誤って押すことがほとんどない。
分割コマンドも自分には直感的で、
%は水平線、"は垂直線のように感じる。設定のリロードも最初の頃は頻繁にしていたが、今ではほとんどしない
必要なら
.tmux.confに を追加すればよい。ローカル専用なら衝突の心配もないtmux は大好きだが、400 行の設定ファイルが必要になるのが難点。
デフォルトのままだと不親切だが、しっかり手を入れると本当に素晴らしくなる。
自分の設定ファイル が参考になるかもしれない
必要なショートカットは 9 個ほど覚えただけ
PowerShell 版も追加する予定
プレフィックスのバインドだけ元に戻した
昔、週末に "tmux 2: mouse-free productivity" という本を読んだが、自分の生産性に最も大きな影響を与えた本の一つだった。
最新版も継続的に更新されている → tmux 3: productive mouse-free development