调整zsh git自动补全


10

我只是从bash切换到在Ubuntu Hardy上使用zsh 4.3.4。我正在使用git进行开发,但是我发现自己一直在与默认的git补全进行斗争:文件名补全通过检测您添加或删除的内容(使用git-ls-files)来变得聪明,但有时会出错-例如,如果您在子目录中。它还不知道我的自定义git别名(例如,git ci作为提交的别名)。

zsh超级用户,如何改善这种情况?

这是我的一些想法,尽管由于不熟悉zsh,所以我不知道如何实现它们,所以也许您可以提供帮助或提出自己的想法:

  • 禁用git文件名补全,仅保留分支/标记/命令名称/命令选项补全。
  • 用常规的zsh文件名完成替换“智能”文件名完成。
  • 如果修复了这些错误,请获取更新的_git完成文件,并覆盖系统文件。

谢谢!



是的,据我所知,它只是添加了一个git提示,并且不调整基础补全。
埃米尔(Emil Sit)2009年

谁能告诉我们如何禁用所有git命令的所有“智能”完成功能?他们做太多的IO。外壳需要立即响应。我只想回到git命令的旧的简单文件名补全。每次我对此进行网络搜索时,我只会得到通用zsh手册页信息的迷宫。
彼得·里昂斯

2
仅供参考,对于只想禁用烦人的git完成,而该完成会导致shell阻止执行IO,在Ubuntu 10.04上,我只是这样做: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
Peter Lyons 2010年

Answers:


5

尝试升级到最新版本的Zsh。我刚刚从4.3.4升级到4.3.10,它至少解决了Git别名未完成的问题。

与其破解我的安装,不如将其添加到本地.zshrc

customzsh=/usr/local/src/zsh-4.3.10/bin/zsh-4.3.10
if [ "$SHELL" != "$customzsh" ]; then
  export SHELL=$customzsh
  exec $customzsh
fi

5

对于大型项目,即使是较新的git完成脚本也太慢了。要禁用它们并仅使用常规文件完成功能,请将以下命令放入.zshrc中:

compdef -d git
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.