*iroi*

mechairoi の Blog

ghq/fzf で選んだリポジトリに対応する tmux の session を作ったり探したりするスクリプト

gist41201c4579d17253b7bd26e699c6dccb

  1. リポジトリghq | fzf で選ぶ
  2. リポジトリに対応する session が tmux になければ作る
  3. 対応する session が存在する場合はそれを前面に

といったことを行うスクリプトです。

f:id:mechairoi:20171226225115g:plain

session の current directory がリポジトリのルートに設定されるので、別のシェルを使いたいときは tmux new-window などで新しい端末を開けば cd する必要もありません。 作業リポジトリを切り替えたいときも、このスクリプトを起動して選ぶだけで、以前の session があれば記憶とともに蘇ることでしょう。

#!/usr/bin/env bash
# Put followings your .tmux.conf
#
# bind ^T run-shell tmux-ghq
#
set -e
fzfcmd="fzf-tmux -d${FZF_TMUX_HEIGHT:-40%} -e +s"
tmux start-server
selected=$( (tmux list-sessions; ghq list --full-path) | $fzfcmd) && true
status=$?
if [ $status -eq 0 ]; then
if echo "$selected" | grep ': ' > /dev/null; then
session_name=$(echo "$selected" | cut -f 1 -d ':')
else
repo=$(basename "$selected")
owner=$(basename "$(dirname "$selected")")
session_name=$(echo "${owner}/${repo}" | sed -e 's/[^A-Za-z0-9_/-]/_/g')
tmux new-session -d -c "$selected" -s "$session_name" 2> /dev/null || true
fi
if [[ -z "$TMUX" ]]; then
exec tmux attach-session -t "$session_name"
else
tmux switch-client -t "$session_name"
fi
fi
view raw tmux-ghq hosted with ❤ by GitHub

gist41201c4579d17253b7bd26e699c6dccb