调整 zsh git 自动完成

调整 zsh git 自动完成

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

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

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

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

谢谢!

答案1

对于大型项目,即使是较新的 git 补全脚本也太慢了。要禁用它们并仅使用普通文件补全,请在 .zshrc 中输入以下命令:

compdef -d git

答案2

尝试升级到最新版本的 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

相关内容