Copie e modifique oportunamente a partir de /etc/bash_completion.d/git
, adicione as seguintes linhas ao seu ~/.bashrc
:
complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \
|| complete -o default -o nospace -F _git g
Se eu fizer isso:
alias g='git'
Eu perdi todas as regras de conclusão (ou seja, as ramificações e os controles remotos não estão mais sendo concluídos automaticamente quando eu pressiono o TAB depois de digitar, por exemplo g push o
).
Copie e modifique oportunamente a partir de /etc/bash_completion.d/git
, adicione as seguintes linhas ao seu ~/.bashrc
:
complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \
|| complete -o default -o nospace -F _git g
O upstream mais recente do bash-completion mudou e renomeou um pouco as coisas. Agora é:
source /usr/share/bash-completion/completions/git
__git_complete g __git_main
Use isso em versões recentes do Ubuntu (por exemplo, 14.04, também Fedora 22+) quando encontrar:
completion: function '_git' not found
durante a conclusão.
Primeiro, procure o comando de conclusão original. Exemplo:
$ complete | grep git
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git
Agora, adicione-os ao seu script de inicialização (por exemplo, ~ / .bashrc):
# copy the original statement, but replace the last command (git) with your alias (g)
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main g
# load dynamically loaded completion functions (may not be required)
_completion_loader git
A linha _completion_loader
pode não ser necessária. Mas, para algumas situações, a função de conclusão é carregada apenas dinamicamente depois que você digita o comando e pressiona TAB
na primeira vez. Portanto, se você não tiver usado o comando original e tentar o alias + TAB
, poderá receber um erro como "bash: completion: function not found".
A maneira atualizada de fazer isso (completo não funcionaria para mim):
cd
- mude para o seu diretório pessoal wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
source ~/git-completion.bash
ao seu arquivo .bashrc (se você não tiver esse arquivo, crie um em sua pasta pessoal, o bash irá procurá-lo automaticamente) alias g='git'
ao seu arquivo .bashrc. source ~/.bashrc
Apenas para completar, gostaria de adicionar uma resposta usando o arquivo ~/.bash-completion
, que é originado no final do script de conclusão do bash:
_xfunc git __git_complete g __git_main
_xfunc git __git_complete gl _git_log
_xfunc git __git_complete gd _git_diff
_xfunc git __git_complete gb _git_branch
Em seguida, no meu ~/.bashrc
, tenho apenas os aliases. Eu estava tentando:
~/.bashrc
com o material de conclusão do bash (manter as coisas onde ele pertence) ✓ Unforutnately, o _xfunc
fornece a conclusão do git. Vou atualizar essa resposta assim que descobrir como fazê-lo corretamente (também perguntei no lunchpad aqui ).
Você pode apenas definir aliases como de costume:
alias g='git'
Em seguida, instale o complete-alias para que o bash complete o alias-aware.