L'achèvement de l'onglet ZSH des commandes git est très lent. Comment puis-je l'éteindre?

18

Si je tape:

rm <TAB>

Je verrai les achèvements possibles presque instantanément.

Cependant, si je tape:

git rm <TAB>

Il va se bloquer pendant plusieurs secondes s'il est dans un référentiel git, ou ne pas afficher de fin si je suis en dehors d'un référentiel git.

Comment puis-je résoudre ce problème?

Il n'y a rien dans mon .zshrc qui semble avoir à voir avec git: - /

Casey Rodarmor
la source
+1 Cela me rend tellement fou que j'ai câblé mon cerveau pour ne pas frapper <TAB>lorsque j'utilise git.
Christopher

Réponses:

26

J'ai finalement pris la peine de google cela et j'ai trouvé cette réponse SO, qui a parfaitement fonctionné pour moi. Ajoutez ceci à .zshrc:

__git_files () { 
    _wanted files expl 'local files' _files     
}

Il y a aussi un fil de liste de diffusion profonde ici à ce sujet en expliquant ce qui zshest en train de faire prendre si longtemps.

Christophe
la source
1
Cela n'a pas fonctionné pour moi. Je charge les plugins oh-my-zsh suivants: plugins = (git gitfast last-working-dir zeus). J'ai chargé la fonction ci-dessus après les plugins.
justingordon
1
J'ai eu le même problème. Commentant pour confirmer le succès: sur OSX 10.8.5, zsh 4.3.11, git 1.8.2, cette entrée .zshrc a fait toute la différence. Sans elle, cpu épingle régulièrement à 100%. Avec cela, la complétion des onglets semble à peu près la même pour les commandes git que pour les autres. Je vous remercie! :)
cweekly
Assurez-vous de placer cette commande avant vos plugins zsh, sinon vous pourriez vous retrouver avec une autocomplétion rapide, mais des erreurs une fois que vous essayez d'exécuter réellement la commande git.
Simon
1

Voici une autre option: l'achèvement officiel de Git zsh: git-complétement.zsh . Tout ce que vous avez à faire est de le télécharger ~/.zsh/_gitet de vous assurer qu'il se trouve dans votre fpath:

fpath=(~/.zsh $fpath)

Je trouve intéressant que ce fil soit mentionné dans une autre réponse; J'ai commencé ce fil, et j'ai écrit l'achèvement officiel de Git zsh en conséquence.

FelipeC
la source