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文件中:
Run Code Online (Sandbox Code Playgroud)__git_files () { _wanted files expl 'local files' _files }
现在我可以运行git命令并接近即时完成,同时仍然获得类似于ls所提供的文件完成.
最后厌倦了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)
这是因为 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。