ZSH tab completion of git commands is very slow. How can I turn it off?

18

3

If I type:

rm <TAB>

I'll see possible completions almost instantly.

However, if I type:

git rm <TAB>

It'll hang for several seconds if it's in a git repo, or fail to show any completions if I'm outside of a git repo.

How can I fix this behavior?

There's nothing in my .zshrc that looks like it has to do with git :-/

Casey Rodarmor

Posted 2012-08-08T01:30:01.063

Reputation: 283

+1 This drives me so batty I've wired my brain to not hit <TAB> when using git. – Christopher – 2012-08-08T12:12:03.103

Answers

27

I finally bothered to google this and came up with this SO answer, which worked perfectly for me. Add this to .zshrc:

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

There's also a deep mailing list thread here about it explaining what zsh is doing to take so long.

Christopher

Posted 2012-08-08T01:30:01.063

Reputation: 676

Make sure you put this command before your zsh plugins, otherwise you might end up with quick autocompletion, but errors once you try to actually run the git command. – Simon – 2015-04-22T07:22:25.143

1This did not work for me. I'm loading the following oh-my-zsh plugins: plugins=(git gitfast last-working-dir zeus). I loaded the above function after the plugins. – justingordon – 2013-11-21T21:41:31.223

1I had the same problem. Commenting to confirm success: on OSX 10.8.5, zsh 4.3.11, git 1.8.2, that .zshrc entry made all the difference. Without it, cpu regularly pinned at 100%. With it, tab completion seems about the same for git commands as any other. Thank you! :) – cweekly – 2014-04-04T20:34:40.990

1

Here's another option: the official Git zsh completion: git-completion.zsh. All you need to do is download that to ~/.zsh/_git, and make sure it's in your fpath:

fpath=(~/.zsh $fpath)

I find it interesting that this thread is mentioned in another response; I started that thread, and I wrote the official Git zsh completion as a result.

FelipeC

Posted 2012-08-08T01:30:01.063

Reputation: 111