1

我的机器是运行 Big Sur 的 M1 Mac mini。

我试图让 git 完成在使用 zsh shell 的默认终端中工作。

这是我正在尝试和期待的。截图如下。

zsh 的 git 完成

我能够完成工作,但与此处描述的不完全一样。

基本上,如果我键入git cheTab直接转换为git checkout而不是给出/列出所有以“che”开头的 git 命令的选项(如上面的屏幕截图所示。)

任何进一步的按压Tab只会导致在各个分支之间循环,但checkout根本不会改变。

我尝试了多种方法,例如

但似乎没有一个工作..

我究竟做错了什么?

(顺便说一句,即使没有显示有用的建议(在上面的屏幕截图中),我也可以。但是完成应该允许我看到所有可能的模棱两可选项的列表并循环浏览它们。)

4

1 回答 1

3

你是通过Homebrew安装 Git 的吗?如果是这样,那么它还安装了与 Git 捆绑的完成,这是其 Bash 完成的简单端口,然后覆盖 Zsh 自己的更复杂的 Git 完成。

至少有两个 问题两个 PR已经提交给 Homebrew,以使安装 Git 公式附带的补全成为可选或完全删除它,但它的维护者拒绝这样做,因为他觉得在 Zsh 中使用这种 Bash 风格的补全是对他来说已经足够好了。他的论点基本上是,由于它与 Git 一起提供,因此它是官方完成,它应该覆盖 Zsh 自己的(更好的)Git 完成。至于为什么在 Git 存储库中甚至维护这种劣质完成,当 Git 手册本身建议使用 Zsh 的完成时,我不知道。我想这对你来说是开源的。‍♂️</p>

我发现解决此问题的唯一可靠方法是将以下行放入.zshrc文件中:

rm -f $HOMEBREW_PREFIX/share/zsh/site-functions/_git

这将导致使用 Zsh 自己的 Git 完成功能,从而在您发布的屏幕截图中提供更好的输出。

于 2021-01-22T09:29:11.447 回答