tmux

tmuxはかなり便利で活用されてる方も多いと思います。zshやtmux.confに設定している多少上級者向けのお勧めの設定を今回はご紹介します。

1. alias t

zshrc向けの設定です。

alias t="tmux attach || tmux"

tは左手人差し指で届く非常に押しやすいボタンです。 この重要な一文字エイリアスを贅沢にtmuxにアサインしてしまいます。 ポイントは基本をtmux attachにし、attachへ失敗した時に新しく構築するようにHackさせます。

基本的にtmuxinatorなどでtmuxのsessionは作っているものを運用することが多いため、このショートカットはattachを前提として設定してしまいます。恐らくtmuxコマンドを打たれる時も、「何もsessionが無い時に新規で作る」or「既存のsessionにアタッチする」この二択が8割以上を占めるはずです。

新たに無名tmux sessionを作り始めたい場合は、alias経由ではなく、tmuxと押せば問題ありません。

2. alias x/X

こちらもzshrc用の設定です。

alias x="mux"
alias X="tmux kill-server"

xコマンドでtmuxinatorを起動します。x projectなどで直ぐにsessionを引っ張ることが出来ます。

tmuxinatorを使っていて感じることは、”Sessionを最初から作り直したい”という要望です。tmuxinatorでは最初に起動するときにスクリプトが一式実行されます。一度セッションを作ってしまうと、mux projectと実行しても同じプロジェクトがアタッチされるだけになります。もちろんセッション切り替えという面ではある意味合理的ですが、後述するsession切り替えをメインで利用する身としてはあまり不要な機能だったりします。

そういう時のために、Xキーをkill serverに大胆にアサインしてしまいます。これにより、「xでセッションを呼び出し、Xで全部のセッションを閉じる」というスムーズな流れを構築できます。またtmuxでは元々BIND + xでpaneを閉じる動きをするため、元来の動きの意味合いからもそこまで離れていません。

これで、tmuxinator経由でsession作って、すぐにsessionを捨てて、またsessionを作ってという、まさにイミュータブルインフラストラクチャではりませんが、tmuxの環境のDisposable化実現させます。

3. peco + switch-client

tmux.confの設定です。

bind s split-window -c '#{pane_current_path}' -v "tmux ls | cut -d: -f1 | peco | xargs tmux switch-client -t"

デフォルトのswitch-client設定をpecoで上書きしてしまいます。 bind sを叩くことで、pecoが起動しキーワードでのフィルター経由の選択が簡単に出来るようになります。 tmuxinator経由で起動している場合、かならずsession名が付与されるため、pecoでsessionをスイッチ出来るのは非常に相性が良いです。