Suponho que você esteja usando o "novo" sistema de conclusão ativado por compinit
. Se você está usando oh-my-zsh, você é.
Você precisa dizer ao zsh para usar nomes de ramificações do git para gpDo
. O Git já vem com uma maneira de completar os nomes das filiais. A partir do zsh 5.0.7, esta é a função __git_branch_names
, mas esta não é uma interface estável, portanto, pode mudar em outras versões. Para usar essa função, coloque esta linha no seu .zshrc
:
compdef __git_branch_names gpDo
Com essa declaração, a conclusão após gpDo
só funcionará depois que você tiver concluído algo em uma linha de comando git
pelo menos uma vez. Isto é devido a uma peculiaridade de autoloading de função no zsh. Como alternativa, execute _git 2>/dev/null
no seu .zshrc
; isso causa um erro porque a função de conclusão é chamada em um contexto inválido, mas o erro é inofensivo, e o efeito colateral de carregar _git
e funções associadas, incluindo __git_branch_names ', permanece.
Como alternativa, defina sua própria função para conclusão de ramificação git. Maneira rápida e suja:
_JJD_git_branch_names () {
compadd "${(@)${(f)$(git branch -a)}#??}"
}