Si je fais ça:
alias g='git'
Je perds toutes les règles d’achèvement (c’est-à-dire que les branches et les télécommandes ne sont plus automatiquement complétées lorsque je frappe sur la touche TAB après avoir tapé, par exemple g Push o
).
En copiant et en modifiant opportunément à partir de /etc/bash_completion.d/git
, ajoutez les lignes suivantes à votre ~/.bashrc
:
complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \
|| complete -o default -o nospace -F _git g
Les dernières modifications finales en amont ont déplacé et renommé un peu les choses. La neige:
source /usr/share/bash-completion/completions/git
__git_complete g __git_main
Utilisez-le dans les versions récentes d’Ubuntu (par exemple 14.04, ainsi que Fedora 22+) lorsque vous rencontrez:
completion: function `_git' not found
pendant l'achèvement.
Dans ~/.bashrc
:
alias g='git'
source /usr/share/bash-completion/completions/git
complete -o default -o nospace -F _git g
Via http://29a.ch/2013/8/9/fixing-bash-autocomplete-on-ubuntu-13-04
Tout d'abord, recherchez la commande d'achèvement d'origine. Exemple:
$ complete | grep git
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git
Ajoutez-les maintenant à votre script de démarrage (par exemple ~/.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
La ligne _completion_loader
peut ne pas être requise. Toutefois, dans certaines situations, la fonction d'achèvement n'est chargée de manière dynamique qu'après avoir tapé la commande et appuyé sur TAB
la première fois. Donc, si vous n'avez pas utilisé la commande d'origine et essayez l'alias + TAB
name__, vous risquez d'obtenir une erreur du type "bash: completion: fonction introuvable".
Le moyen mis à jour de faire cela (complet ne fonctionnerait pas pour moi):
cd
- passe à votre répertoire personnelwget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
source ~/git-completion.bash
à votre fichier .bashrc (si vous n'avez pas ce fichier en créer un dans votre dossier personnel, bash le recherchera automatiquement)alias g='git'
à votre fichier .bashrc.source ~/.bashrc
Par souci d'exhaustivité, j'aimerais ajouter une réponse à l'aide du fichier ~/.bash-completion
, qui est obtenu à la fin du script bash-completion:
_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
Ensuite, dans mon ~/.bashrc
, je n'ai que les alias. J'étais en train d'essayer de:
~/.bashrc
avec des commandes bash-finish (conservez-les à la place) ✓Unforutnately le _xfunc
source le git-completion de toute façon. Je mettrai à jour cette réponse une fois que je saurai comment le faire correctement (je lui ai également demandé à déjeuner ici ).