21 ポイント 投稿者 GN⁺ 16 일 전 | 1件のコメント | WhatsAppで共有
  • ~/.tmux.conf 設定ファイルを通じて、キーバインド、色、ステータスバー、マウス動作 などを自由に調整できる
  • デフォルトの Prefix キー C-bC-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-LeftAlt-RightAlt-UpAlt-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 セクションを参照すると、さまざまな視覚要素を設定できる
    • 標準のターミナル色(redyellowblack など)を使うとテーマになじみやすい
    • 256 色モードでは colour0colour256 を指定できる
  • 設定例には次の項目が含まれる
    • ベル通知の無効化、時計の色を 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.confdotfiles リポジトリで確認できる
    • Reddit の /r/dotfiles/r/unixporn も参考になる
  • 全体の設定は GitHub dotfiles リポジトリ で公開されている
  • さらに学ぶには tmux の man ページtmux wiki の Configuring tmux セクション の参照がおすすめ
    • 最新機能と詳細なオプションを幅広く扱っている
  • ターミナルのカラーテーマを自分で設計するなら Root Loops(https://rootloops.sh/) を利用できる
    • 個人向けにカスタマイズしたターミナル配色をサポートする

1件のコメント

 
GN⁺ 16 일 전
Hacker Newsのコメント
  • 以前は tmux を使っていたが、Zellij を見つけてからは完全に乗り換えた。
    タブやパネルの設定がずっと直感的で、マウスでスクロールやテキスト選択がしやすく、コピー&ペーストも簡単

    • Zellij のダウンロードページを見て思ったのだが、リンクにボタンは使わないでほしい。
      ボタンリンクだと右クリックでコピーできないし、アクセシビリティの面でもよくない
    • Zellij の唯一の致命的な欠点は、キーボードで画面上のコピー/ペーストができず、複数のクリップボードバッファもサポートしていないこと。
      tmux では 1〜2 分おきにこの機能を使っているが、Zellij の開発者はデータをエディタにパイプしろと言うものの、システムクリップボードとは互換性がない。
      そのため結局 tmux に戻った
    • 組み込み機器を使う立場からすると、Zellij は大きすぎる。
      Zellij は約 50MB だが、tmux は依存ライブラリ込みでも 2MB 程度なので、容量差が大きい
    • ここ 2 週間ほど zmx を使ってみたが、多少の画面再描画バグはあるものの、ghostty と組み合わせるにはかなり快適
    • 自分も Zellij に移ったが、また tmux に戻った。
      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 設定がないと警告するが、ちゃんと動いている
    • おかげで探していた解決策が見つかった
    • multiplexer が死んだのに子プロセスが生き続ける、という状況があり得るのか気になる。
      tmux ではサーバーを落とすと配下のプロセスも片付くので便利だった
    • 自分の環境では Shift+Enter は効かず、Option+Enter で改行が入る(MacOS、Claude Code 環境)
    • 新しいバインドを避けたいなら \ + Enter の組み合わせでもできる
  • tmux のControl Modeを知ってから、完全にゲームチェンジャーになった。
    iTerm2 で tmux -CC を実行すると、タブ、スクロール、コピー&ペースト、ショートカットなどがターミナルネイティブに動作する。
    タブも視覚的に全部見えるし、特に初心者には便利

    • この機能のために Mac を使っている。10 年間 Linux のターミナルでこれを実装したものはなかった
    • 自分のところでも -CC モードは完璧に動いている
    • ghostty でも動くのか気になる
    • ようやく -CC が何をするものか理解できた
    • 思わず感嘆した
  • 自分は tmux で Alt+数字による高速ウィンドウ切り替えを使っている。
    例: bind-key -n M-1 select-window -t :1 のように設定する。
    Alt-/ で vi スタイルのコピーモードを開くこともできる。
    Wayland 環境では wl-copy を使えば、マウスドラッグや y キーでコピー可能。
    Powerline 風のデザインも追加したが、powerline-fonts が必要

  • tmux をカスタマイズしすぎたせいで、新しいサーバーに ssh 接続すると基本的な使い方を忘れてしまう。
    今はデフォルト設定で使っている。ただしマウススクロール設定だけは毎回変えなければならない

    • dotfiles リポジトリを作って tmux や zsh などの設定を管理しているのか、と聞かれた
    • これはEmacs の呪いに近い。無限にカスタマイズできるが、結局は自分だけの奇妙な環境になってしまう。
      関連する概念として The Lisp Curse もある
    • 自分も同じ問題に遭遇したが、デフォルト設定を上書きせず、衝突しない設定だけを追加する形で解決した。
      たとえば Ctrl-b はそのままにして、Ctrl-space を追加ショートカットにしている
    • Emacs でも同じ経験をした。ディスクが壊れてカスタム設定を失ってから、ほぼデフォルト状態に戻った
    • 「Claude、あのサーバーに自分の tmux 設定を scp してくれ」みたいな冗談が出るほど
  • iTerm2 での tmux の Control Mode には感心した。
    ローカルのウィンドウマネージャとしてリモート端末のウィンドウを制御できる。
    ghostty でもその機能の実装が進んでいるようで期待している

  • tmux のデフォルトプレフィックスキー (C-b) は awkward だという意見が多いが、自分はむしろその押しにくさが利点だと思っている。
    誤って押すことがほとんどない。
    分割コマンドも自分には直感的で、% は水平線、" は垂直線のように感じる。
    設定のリロードも最初の頃は頻繁にしていたが、今ではほとんどしない

    • 自分もデフォルトプレフィックスキーが好き。
      必要なら .tmux.conf
      unbind-key -T prefix C-b
      set-option -g prefix C-s
      
      を追加すればよい。ローカル専用なら衝突の心配もない
  • tmux は大好きだが、400 行の設定ファイルが必要になるのが難点。
    デフォルトのままだと不親切だが、しっかり手を入れると本当に素晴らしくなる。
    自分の設定ファイル が参考になるかもしれない

    • 自分は何も設定を変えていないが、それでも十分使えると感じている。
      必要なショートカットは 9 個ほど覚えただけ
    • 自分の設定ファイル は、どこからでも wget や curl で簡単に取れるようにしてある。
      PowerShell 版も追加する予定
    • 自分は jcs の設定 を参考にして数行だけコピーした。
      プレフィックスのバインドだけ元に戻した
  • 昔、週末に "tmux 2: mouse-free productivity" という本を読んだが、自分の生産性に最も大きな影響を与えた本の一つだった。
    最新版も継続的に更新されている → tmux 3: productive mouse-free development

    • ただ、本の中で tmux の作者や起源への言及がなかったのは残念だった
    • 良い参考書の紹介に感謝