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

har*_*oba 24 git bash zsh git-bash zsh-completion

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

ral*_*nja 49

它不是git auto完成文件名,它是你的shell.在做"猫形式<tab>"时你有同样的延迟吗?

看看这篇文章有类似的问题:

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

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

__git_files () { 
    _wanted files expl 'local files' _files     
}
Run Code Online (Sandbox Code Playgroud)

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

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

__git_files () { 
    _wanted files expl 'local files' _files  }
Run Code Online (Sandbox Code Playgroud)

现在我可以运行git命令并接近即时完成,同时仍然获得类似于ls所提供的文件完成.

  • 这似乎对我没有任何影响(我的仓库不应包含许多未跟踪的,被忽略的文件,而我正在使用Cygwin的ZSH)。显然,我的机器有些不同。有什么建议可以诊断出差异吗? (2认同)

Mar*_*dig 7

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


小智 5

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

compdef -d git
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这使git命令的完成失败。例如,如果您输入`git ch &lt;TAB&gt;`,它将不会提供有效的git命令列表。 (2认同)

Fel*_*peC 5

这是因为 Zsh 默认情况下为 Git 提供了极其臃肿的补全功能。我写了一篇博客文章解释了如何解决这种臃肿问题,但它必须在 Zsh 项目之外。

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

fpath=(~/.zsh $fpath)
Run Code Online (Sandbox Code Playgroud)

你现在应该飞了。

正如这里的另一条评论所解释的那样;另一种选择是使用oh-my-sh并启用gitfast插件,它可以实现相同的效果。

为什么 Zsh 开发人员坚持让他们的代码变慢?我不知道,但在这里您可以看到他们的推理示例:Re: Slowness issues with git finish