似たようなのは色々あるんだけど、ローカルもリモートもよしなにして checkout してくれるのが見当たらなかったので書いた。
dameleon/dotfiles/.zsh/peco/peco-git-branch-checkout.zsh
function peco-git-branch-checkout () {
local selected_branch_name="$(git branch -a | peco | tr -d ' ')"
case "$selected_branch_name" in
*-\>* )
selected_branch_name="$(echo ${selected_branch_name} | perl -ne 's/^.*->(.*?)\/(.*)$/\2/;print')";;
remotes* )
selected_branch_name="$(echo ${selected_branch_name} | perl -ne 's/^.*?remotes\/(.*?)\/(.*)$/\2/;print')";;
esac
if [ -n "$selected_branch_name" ]; then
BUFFER="git checkout ${selected_branch_name}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-git-branch-checkout
.zshrc
に
bindkey '^g' peco-git-branch-checkout
などとすると動く。
シェル芸は不得意なので優しくフィードバックをお待ちしております。