zsh:当我输入命令Y时,对命令X使用完成

时间:2010-11-19 01:04:32

标签: zsh tab-completion programmable-completion

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

  • 没有参数,请致电git status
  • 使用一个或多个参数,使用所有给定的参数委托给git - 即call git $@

我希望g的标签完成与git完全相同。我可以使用alias g=git来实现此目的,但这不允许我默认调用status(上面的第一点)。

如何委托git完成?

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

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

1 个答案:

答案 0 :(得分:17)

compdef的文档说明了这一点:

  

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

compdef _pids foo

但是调整它(_git git 的常用完成函数)并没有为我产生一个工作结果(即使在_git被自动加载后):

compdef _git g

我能够通过_dispatch让它工作:

compdef '_dispatch git git' g