peco を使って tmux の session にいい感じにアタッチ出来るようにした。
想定する tmux の使いかた
- セッションを沢山生やす
- 私は、だいたい1 git repository 毎に tmux の session を生やしている。
- 仕事だとメインで 4 git repositories + 色々 の為に tmux session を使っている
tmux list-sessions | wc -l
したら 11 だった
- 1 directory につき 1 session
- 例えば、
~/hogeapp/
というディレクトリには1つセッションがあれば充分。
- 例えば、
- zsh を使用している
- 他のシェルの人は、適宜読み替えて欲しい
やりたいこと
peco
を使用して、いい感じに tmux の session を選択してアタッチをすることが出来る。
やったこと
1. tmux のセッションに名前を付ける
デフォルトでは、tmux のセッションに名前はなく、連番が振られる。
連番だとlist-sessions
してもどれが目的のセッションなのかがわからないため、名前を付けるようにする。
function t() { tmux new-session -s $(basename $(pwd)) }
上記を~/.zshrc
に追記する。
これにより、t
で tmux のセッションを新しく起動すると、起動したディレクトリの名前がセッション名になる。
2. peco の設定を書く
function peco-select-tmux-session() { if [ -n "$TMUX" ]; then echo 'Do not use this command in a tmux session.' return 1 fi local session="$(tmux list-sessions | peco | cut -d : -f 1)" if [ -n "$session" ]; then BUFFER="tmux a -t $session" zle accept-line fi } zle -N peco-select-tmux-session bindkey '^T' peco-select-tmux-session
上記も~/.zshrc
に追記する。
これで、<C-t>
で tmux の session 名からアタッチが行えるようになった。