调整 zsh git 自动完成

Emi*_*Sit 11 zsh git

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

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

这是我的一些想法,尽管我不知道如何实现它们,因为我是 zsh 的新手,所以也许您可以提供帮助或提供自己的想法:

  • 禁用 git 文件名补全,只留下 branch/tag/command-name/command-option 补全。
  • 用常规的 zsh 文件名完成替换“智能”文件名完成。
  • 获取更新的 _git 完成文件,如果它修复了这些错误,并覆盖系统文件。

谢谢!

a p*_*erd 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
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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