5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Tmux のセッション名を楽に変えて楽に管理する

Posted at

tmux、便利ですよね。僕は使わない日が無いほど依存しています。

tmuxはセッション・ウィンドウ・ペインという単位で画面を管理します。
僕のtmuxの使い方だと、プロジェクト単位(リポジトリ、フォルダ等)でセッション、目的単位(常駐プロセス起動、ソースコード編集等)でウィンドウ、タスク単位(サーバー起動・ファイル変更監視等)でペインを割っています。

しかし何も考えずにセッションをバンバン立ち上げまくっていると

スクリーンショット 2018-07-22 21.31.12.png

こうなります。

どのセッションで何やってるか分からなくなるので、切り替えるときに迷います。

tmuxにはセッションに名前を付けるコマンド(rename-session)もありますが、いちいちセッション名を打つのも面倒なので、半自動でいい感じにセッション名をつけてくれるスクリプトを書きました。

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//./_}

スクリプト単体で動かすと、今いるディレクトリに応じて次のような法則でセッション名を変更します。

  1. git管理下のフォルダにいる場合
    • プロジェクトのルートフォルダ名
  2. git管理外のフォルダにいる場合
    • 今いるフォルダ名
  3. スクリプトに引数を渡した場合
    • 引数の文字列

また、セッション名に.が使えないようなので、名前に.が含まれている場合は_に置換しています。

~/.tmux.confで、このスクリプトをキーバインド設定します。

~/.tmux.conf
bind-key (key) command-prompt -p "Session name >" "run-shell 'cd #{pane_current_path} \; tmux-rename-session %%'"

キーバインドを打つと、ステータスバーに以下のようなプロンプトが出ます。

スクリーンショット 2018-07-22 23.35.30.png

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

スクリーンショット 2018-07-22 23.54.05.png

基本は名前を付けたいセッションにいるときにキーバインド > EnterでOKです。
ガンガン名前を付けて、管理しやすくしていきましょう。
スクリーンショット 2018-07-23 0.14.01.png

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?