在 zsh 中,我有一个名为 g 其行为如下:

  • 不带任何参数,调用 git status
  • 使用一个或多个参数,将所有给定参数委托给 git - 即称呼 git $@

我想要选项卡补全 g 与 完全相同 git. 。我可以通过以下方式实现这一点 alias g=git, ,但这不允许我打电话 status 默认情况下(上面的第一点)。

我如何委托完成 git?

在 bash 中,我只是做了 complete -F _git g 它重用了 git 的补全功能。使用 zsh,git 的补全看起来要复杂得多,我无法找到类似的解决方案。

我猜想 zsh 中有一些函数可以说“假装我输入了命令 [x],你会把它完成什么?”。如果我知道那是什么,那么使用函数来委托它应该足够简单。但我在手册中没有找到这样的功能。

有帮助吗?

解决方案

的文档 compdef 说:

功能 compdef 可用于将现有完成函数与新命令相关联。例如,

compdef _pids foo

但要适应它(_git 是通常的完成函数 git)没有为我产生工作结果(即使在 _git 已自动加载):

compdef _git g

我能够通过以下方式让它工作 _dispatch 尽管:

compdef '_dispatch git git' g
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top