アルパカログ

tmux セッション名をディレクトリ名にしてattach or newするスクリプトの紹介

2020年12月14日
🔖shell

tmuxはそのままでも便利ですが、少しカスタマイズしてあげることで格段に使い勝手が良くなります。

私がtmuxでおすすめしたいカスタマイズは、セッション名の自動化です。

セッション名を自動で付けてあげることによって、セッション一覧での視認性が良くなり、セッションを用いた複数ワークスペースの作業効率が格段にアップします。

このエントリでは、tmuxセッション名を自動でカレントディレクトリ名にして attach or new する自作スクリプトを紹介します。

自作スクリプトの紹介

今回作成したのはtmux-attach-or-new-session.shという、名前の通りtmuxセッションがあればattach、なければnewするだけのシンプルなスクリプトです。

下記はデモですが、わかりづらいので何をしているか説明します。

  1. HOMEディレクトリでセッション開始 (t)
  2. すでに同名のセッションがあったため自動でattach
  3. Ctrl+dでdetach
  4. dotfilesディレクトリに移動してセッション開始 (t)
  5. すでに同名のセッションがあったため自動でattach
An image from Notion
ディレクトリ名のtmuxセッションがあればattach, なければnewする

セッション名は._に置き換えたカレントディレクトリ名になっています。*1

使い方

使い方は簡単で、tmux-attach-or-new-session.sh~/.zsh/以下に配置して~/.zshrcに下記を追加するだけです。エイリアスはお好みで変更してください。

追記したらsource ~/.zshrcもお忘れなく。

[ -f ~/.zsh/tmux-attach-or-new-session.sh ] && \
  source ~/.zsh/tmux-attach-or-new-session.sh && \
  alias t='tmux-attach-or-new-session'

また、.tmux.confでセッションとウィンドウを一覧できるchoose-treeをいずれかのキーにバインドしておくと捗ります(デモで使っているのもこれです)。

例えば<prefix>+sにバインドするには下記を.tmux.confに追加します。

bind s choose-tree

あとはお好きなディレクトリに移動してエイリアスしたコマンド(サンプルではt)を打つだけで、自動でディレクトリ名のセッションを開始します。

以上です。このエントリでは、tmuxセッション名を自動でカレントディレクトリ名にして attach or new する自作スクリプトを紹介しました。

それでは快適なtmux生活を!

タグ