git的ZSH自动完成需要花费大量时间,我可以将其关闭或优化吗?

时间:2012-03-21 18:06:31

标签: git bash zsh git-bash zsh-completion

Git的标签自动完成对于小型项目非常有用,但我目前正在开发两个使用git的大型项目,而这些项目比无用的更糟糕。每当我输入git add forms<tab>时,git需要20秒或更长时间才能找到文件(在本例中为forms.py),在这个时间段内,我无法在终端中执行任何其他操作。有没有办法关闭自动完成功能,或以某种方式使其更快?

6 个答案:

答案 0 :(得分:48)

这不是git auto完成文件名,它是你的shell。做例如,你有同样的延迟“cat forms&lt; tab&gt;”?

查看此帖有类似问题:

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

这篇文章建议在.zshrc中添加以下内容:

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

编辑:这是该帖子的原始文本

  

我发现很多帖子都有关于git如何缓慢痛苦的投诉   自动完成可以在大型存储库中。有各种各样的   建议补丁和建议加载最新的zsh。也许一个   那些东西会起作用,但我真正想要的就是它   完成文件中分支和文件的名称   系统。我没有找到任何关于如何获得这种行为的建议   我为自己想出来了。我想我会为任何人分享这个   谁可能从中受益。我刚刚将以下内容添加到我的.zshrc中   文件:

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

现在我可以运行git命令并立即完成即时完成   获得类似于ls所提供的文件完成。

答案 1 :(得分:6)

最后厌倦了zshell中非常慢的自动完成并开始寻找解决方案。我最终从'git'切换到使用已经安装的'gitfast'插件,我的zsh和飞行...... https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#gitfast

答案 2 :(得分:4)

我没有使用zshell的经验,但我在另一个论坛上得到了这个答案。您需要在.zshrc文件中包含此行:

compdef -d git

答案 3 :(得分:1)

一个非常快速和肮脏的解决方案是删除负责自动完成的以下文件。

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

答案 4 :(得分:1)

这是因为Zsh默认情况下对Git具有极大的膨胀。我写了blog post解释了如何解决这种肿的问题,但是它必须在Zsh项目之外。

简单的答案是安装Git的zsh完成,这与Zsh的git完成(默认情况下)不同。下载git-completion.zsh,并将其放在您的~/.zsh/_git中。然后将其放在您的fpath上:

fpath=(~/.zsh $fpath)

你应该现在飞翔。

正如这里的另一条评论所述;另一个选择是使用oh-my-sh并启用gitfast插件,这可以实现相同的目的。

为什么Zsh开发人员会坚持要求降低代码速度?我不知道,但是在这里您可以看到他们的推理示例:Re: Slowness issue with git completion

答案 5 :(得分:0)

根据git bash auto complete slow on windows 7 x64的答案,git 2.13提供了更快的git-completion.bash