ZSH auto completion for git takes significant amou

2019-03-08 19:37发布

问题:

Git's tab autocompletion is useful for small projects, but I'm currently working on two big projects that use git and for these it's worse than useless. Whenever I type, say, git add forms<tab>, git takes 20 seconds or more to find the file (in this example, forms.py), and in this timespan I can't do anything else in the terminal. Is there any way to turn off the autocompletion feature, or somehow make it faster?

回答1:

It's not git auto completing the file names, it's your shell. Do you have the same delay when doing e.g. "cat forms< tab >"?

Check out this post with similar problems:

http://talkings.org/post/5236392664/zsh-and-slow-git-completion

This post suggests adding the following to your .zshrc:

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

EDIT: Here's the original text of that post

I found many posts relating complaints about how painfully slow git auto-completion can be in large repositories. There were various suggested patches and suggestions to load the latest zsh. Maybe one of those things would work, but all I really want is for it to complete the names of branches and files as they are in the file system. I did not find any suggestions on how to get this behavior so I figured it out for myself. I thought I would share this for anyone who might benefit from it. I just added the following to my .zshrc file:

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

Now I can run git commands and get near instant completion while still getting file completion similar to what ls would provide.



回答2:

Finally fed up with terribly slow auto-completion in zshell and starting looking a solution. I ended up switching from 'git' to using the 'gitfast' plugin that is already installed w/ oh my zsh and am flying... https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#gitfast



回答3:

I have no experience with zshell, but I got this answer on another forum. You need to include this line in your .zshrc file:

compdef -d git


回答4:

One very quick and dirty solution is to delete the following file responsible for the auto-completion.

/usr/local/git/contrib/completion/git-completion.bash


回答5:

According to the answer to git bash auto complete slow on windows 7 x64, git 2.13 comes with a faster git-completion.bash