tmuxとtmuxinatorで快適なターミナル環境を構築する
Intro
tmux, tmuxinatorを使う、よい!よい!効率上がる!快適!快適!
キーバインドや表示の調整および、画面の分割をあらかじめ設定しておける。毎回手動でやる、悪い!
TL; DR
- tmuxinatorを使い、tmux起動時の分割レイアウトを設定しておく(起動:
tmuxinator start <名前>) - tmuxでキーボード操作でpane、windowの移動およびスクロールができるようにする
- アクティブなpaneを赤い枠で強調する
この記事で設定するキーバインド:
| キー | 動作 |
|---|---|
Shift + 矢印 | ペイン移動(上下左右) |
Alt + 左右 | ウィンドウ移動(前後) |
Alt + 上下 | 半ページスクロール |
tmuxとtmuxinatorの紹介
まずtmux, tmuxinatorについて簡単に説明しておく。
tmuxとは

tmuxはターミナルマルチプレクサと呼ばれるツールで、1つのターミナルセッション内で複数のウィンドウやペインを管理できる。
画面を分割して複数のシェルを同時に表示したり、ウィンドウを切り替えたりすることができる。
さらに内部でキーバインドや見た目のカスタマイズも可能で、長年愛されているだけがある。
私の場合は主に以下の用途で使ってきた。
- 画面分割や複数画面のshellを同時に開いておいて、キーボード操作で気軽に切り替える
- minecraft serverをdetachして起動したままにしておき、かつ後から気軽にattachできるようにする
- (最近はやっていないが)セッション同士のテキストのやり取りをできるようにして、複数のcoding agentを連携する
実際画面の分割だけならwindows terminalでもできるが、shellより外側で処理することになるので、少し管理が面倒になる。
tmuxinatorとは

tmuxは上記の通り非常に便利だが、単に開いただけだと画面は分割されていない。
毎回手動で分割するのは面倒なので、その初期分割プロファイルを複数登録しておき、自在に呼び出せるようにするのが、tmuxinatorだ。
tmuxinatorのインストールとレイアウト設定
インストール手順
tmuxinatorはRubyのgemで提供されている。まずgemを用意し、その後tmuxinatorをインストールする。
1 | |
インストール後は ~/.config/tmuxinator/ 以下にYAMLファイルを置くことでレイアウトを定義できる。起動は tmuxinator start <名前> あるいは省略して tmuxinator <名前> でもよい。
rootで指定したディレクトリに移動されるので、デフォルトで起点としたいフォルダがあればそれを指定する。
また、各paneごとに初期実行コマンドを指定できるので、cdやinitなど必要なコマンドを書くのもよい。
(初期化のタイミング次第で失敗するのでそのあたりの調整は必要)
ペインとウィンドウについて
設定の説明に入る前に用語を整理しておく。
- ペイン(pane): 1つのウィンドウ内の分割された領域。それぞれが独立したシェルを持つ
- ウィンドウ(window): ブラウザのタブに相当するもの。tmuxセッション内に複数持てる
レイアウトの設計思想
普段の作業環境はモニターの使い方によって3パターンある。
- FHD全画面: 4ペインを縦2×横2で等分割(3ウィンドウ)
- 4K左右半分: 6ペインを縦3×横2で等分割(3ウィンドウ)
- 4K全画面: 12ペイン分割、横3列で左右は3分割・中央は6分割(2ウィンドウ)
FHD全画面用: 4ペイン等分割(43.yml)

1 | |
tmuxinator start 43 で起動する。縦2×横2の4分割を3ウィンドウ分持つ構成だ。
4K左右半分用: 6ペイン等分割(63.yml)

1 | |
tmuxinator start 63 で起動する。縦3×横2の6分割だ。4Kモニターの半分を使うと情報密度がちょうどよくなる。
最近はもっぱらこれ。
4K全画面用: 12ペイン複雑分割(122.yml)

12ペイン分割は少々複雑なレイアウトになる。横3列で左右の列は3ペイン、中央の列は6ペインという非対称な構成だ。
左右の列で主な作業を行い、中央の一列で簡単な操作を行う。
このレイアウトはtmuxinatorの標準的なペイン定義だけでは再現しにくい。そこで layout キーにtmux独自のレイアウト文字列を直接指定する。レイアウト文字列は実際にtmuxでペインを作ってから以下のコマンドで取得できる。
1 | |
取得した文字列をYAMLの layout フィールドに貼り付ければよい。起動は tmuxinator start 122 で行う。
1 | |
tmuxの設定ファイル
tmux自体の動作もカスタマイズしておく。設定は ~/.tmux.conf に書く。
マウス操作の有効化

1 | |
mouse on だけでスクロールやペインのクリック選択が使えるようになる。viモードでもマウスホイールが効くように追加で設定している。
アクティブペインの強調
複数ペインを並べると、どこにカーソルがあるか分からなくなることがある。アクティブなペインを赤い枠線で強調するようにした。
1 | |
pane-border-format でペイン枠にカレントディレクトリのパスを表示している。どのペインでどのプロジェクトを作業しているかが一目で分かるので重宝する。
移動ショートカット

マウスも使えるようになったが、キーボードだけで素早くペインやウィンドウを移動できると快適度がさらに上がる。
- Shift + 矢印: ペイン移動(上下左右)
- Alt + 左右: ウィンドウ移動(前後)
- Alt + 上下: 半ページスクロール(copy-modeに入る)
1 | |
-n フラグはプレフィックスキー(後述)なしで直接バインドすることを意味する。Shiftやaltの組み合わせなら他のキーバインドと衝突しにくいので、プレフィックスなしにしても問題が出にくい。
その他の基本設定
1 | |
tmuxのプレフィックスキーはデフォルトで Ctrl-b だが、押しにくいので Ctrl-j に変更している。
viキーバインドモードにすることでコピーモード中の移動をhjklで行えるようになる。
(結局これはあまり使っていない。カスタムキーボードということもあり、矢印で移動しているからだ)
全設定をまとめると以下になる。
1 | |
設定を反映するには tmux source ~/.tmux.conf を実行するか、tmuxを再起動する。
tmuxが起動中の場合は以下のコマンドで設定をリロードできる。
1 | |
プレフィックス + :source-file ~/.tmux.conf でも同様だ。
まとめ
tmuxとtmuxinatorを組み合わせることで、希望の画面構成を一発で再現できるようになった。特にtmuxinatorのYAML定義は一度作ってしまえば使い回しが効くので、環境が変わっても即座に立ち上げられるのが便利だ。
tmux自体のキーバインドも自分の使いやすい形にカスタマイズしておくと、ターミナル操作の体験がかなり変わる。マウス有効化とShift,Alt+矢印のペイン,ウィンドウ移動,スクロールだけでも、作業効率は体感で上がるだろう。
複数プロジェクトを並行して進める場面が多い人はぜひ試してみてほしい。



