最近、久しぶりにtmux.confを見直しを行っていたら新機能を色々増えている!*1 ということで、色々眺めている中で特に気になったのはレイアウト機能でした。 例えばペインを分割したりしているとペイン感の高さがまちまちになって作業がしづらい…みたいなことがよく起こるのでレイアウトを適用して作業を快適にしたいというモチベーションです。 デフォルトで定義されているレイアウトは以下の5つ。
- even-horizontal
- even-vertical
- main-horizontal
- main-vertical
- tiled
しかし、これらを切り替えるキーバイドを割り当てると5個も使うことになる…。 どうしたものかなぁ〜っとmanpageを読んでいたらなんとマルチプレフィックスなキーバイドを定義することができることを発見した! つまり Ctrl+b -> l -> h みたいなことができるようになる!
switch-client -T + bind-key -T
マルチプレフィックスなキーバイドを定義するにはswitch-client -Tとbind-key -Tを使用する。
switch-clientはセッションを変更するコマンドらしい。そして、bind-keyはキーバイドを変更するコマンドである。
これらのコマンドには -T
オプションがあり、これを指定することで利用するキーテーブルを動的に変更ができるようになる。
manpageには以下のようなサンプルがある。
bind-key -Ttable2 c list-keys bind-key -Ttable1 b switch-client -Ttable2 bind-key -Troot a switch-client -Ttable1
この場合 prefix(デフォルトはCtrl+b) -> a -> b -> c と入力すると list-keys
が実行されるという感じ。
便利だ〜〜
実際に設定した内容
これを踏まえて実際に設定したのは以下の通り。
prefix -> l -> l で even-vertical
にしているのはよく使うからである。
bind l switch-client -T layout bind -T layout h select-layout main-horizon bind -T layout H select-layout even-horizon bind -T layout l select-layout even-vertical bind -T layout t select-layout tiled bind -T layout v select-layout main-vertical bind -T layout V select-layout even-vertical
おわりに
tmuxがバージョンアップで便利になっていて、色々やれることを改めて認識した。
今回、紹介していないがhook機能も追加されていて、例えばクリップボード操作された時に何かを実行するみたいなこともできそうだった。
choose-tree
とか choose-buffer
とかも便利そうなので定期的に見直ししていきたい。
*1:最後にtmuxのChangelogを眺めたのが2.4だった記憶。ブログ執筆時点の最新は2.9a。手元のUbuntu 19.04では2.8だった