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 |