tmux
、便利ですよね。僕は使わない日が無いほど依存しています。
tmux
はセッション・ウィンドウ・ペインという単位で画面を管理します。
僕のtmux
の使い方だと、プロジェクト単位(リポジトリ、フォルダ等)でセッション、目的単位(常駐プロセス起動、ソースコード編集等)でウィンドウ、タスク単位(サーバー起動・ファイル変更監視等)でペインを割っています。
しかし何も考えずにセッションをバンバン立ち上げまくっていると

こうなります。
どのセッションで何やってるか分からなくなるので、切り替えるときに迷います。
tmux
にはセッションに名前を付けるコマンド(rename-session
)もありますが、いちいちセッション名を打つのも面倒なので、半自動でいい感じにセッション名をつけてくれるスクリプトを書きました。
# !/bin/bash
if [ $# -lt 1 ]; then
git status > /dev/null 2>&1
if [ $? -eq 0 ]; then
directory=`basename $(git rev-parse --show-toplevel)`
else
directory=`basename $(pwd)`
fi
else
directory=$1
fi
tmux rename-session ${directory//./_}
スクリプト単体で動かすと、今いるディレクトリに応じて次のような法則でセッション名を変更します。
- git管理下のフォルダにいる場合
- プロジェクトのルートフォルダ名
- git管理外のフォルダにいる場合
- 今いるフォルダ名
- スクリプトに引数を渡した場合
- 引数の文字列
また、セッション名に.
が使えないようなので、名前に.
が含まれている場合は_
に置換しています。
~/.tmux.conf
で、このスクリプトをキーバインド設定します。
bind-key (key) command-prompt -p "Session name >" "run-shell 'cd #{pane_current_path} \; tmux-rename-session %%'"
キーバインドを打つと、ステータスバーに以下のようなプロンプトが出ます。

そのままエンターすると、上記1.
または2.
の法則でセッション名が変わります。
自分でセッション名を決めたい場合は、プロンプトに何か入力するとそちらを優先します。

基本は名前を付けたいセッションにいるときにキーバインド > EnterでOKです。
ガンガン名前を付けて、管理しやすくしていきましょう。