Git 的选项卡自动补全对小型项目很有用,但我目前正在处理两个使用 git 的大型项目,对于这些项目来说,这比无用还糟糕。每当我输入,比如说,git add forms<tab>
git 需要 20 秒或更长时间才能找到文件(在本例中为 forms.py),并且在此时间跨度内,我无法在终端中执行任何其他操作。有什么方法可以关闭自动完成功能,或者以某种方式使其更快?
6 回答
它不是 git auto 完成文件名,而是你的 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#快速
我没有使用 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: Slowness issue with git completion。
一种非常快速且肮脏的解决方案是删除以下负责自动完成的文件。
/usr/local/git/contrib/completion/git-completion.bash
根据git bash auto complete slow on windows 7 x64的答案,git 2.13 带有更快的git-completion.bash