git的ZSH自动完成需要大量的时间,我可以关闭它或优化它吗



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

这不是git自动完成文件名,而是您的shell。您在执行例如"cat forms<tab>"时是否有同样的延迟?

看看这篇有类似问题的帖子:

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提供的文件完成。

终于受够了zshell中极其缓慢的自动完成,开始寻找解决方案。我最终从"git"切换到使用"gitfast"插件,这个插件已经安装好了,我的zsh正在飞行。。。https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#gitfast

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

compdef -d git

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

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

fpath=(~/.zsh $fpath)

你现在应该坐飞机了。

正如这里的另一条评论所解释的那样;另一种选择是使用oh my sh并启用gitfast插件,这也实现了同样的目的。

为什么Zsh开发人员会坚持让他们的代码变慢?我不知道,但在这里你可以看到他们的推理示例:Re:git完成的缓慢问题。

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

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

根据git bash在windows 7 x64上自动完成慢速的答案,git 2.13配备了更快的git-completion.bash

最新更新