【问题标题】:git completion on zsh not listing ambiguous options (on macOS)zsh 上的 git 完成未列出不明确的选项(在 macOS 上)
【发布时间】:2021-04-26 05:13:44
【问题描述】:

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

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

This is what I am trying and expecting. 截图如下。

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

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

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

我尝试了多种方法,例如

但似乎没有一个工作..

我做错了什么?

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

【问题讨论】:

    标签: git macos zsh zsh-completion git-completion


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 效果很好。还能告诉zsh的git自动补全文件/函数在哪里吗?
    • @indojin 这取决于。您使用的是 macOS 附带的 Zsh 版本,还是通过 Homebrew 安装了更新版本的 Zsh?
    • 我用的是macOS自带的默认的
    • 然后是/usr/share/zsh/5.8/functions/_git
    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 2023-03-11
    • 2020-10-27
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    相关资源
    最近更新 更多