gist41201c4579d17253b7bd26e699c6dccb
といったことを行うスクリプトです。
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 |