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

gfx*_*onk 18 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],你会把它完成什么?".如果我知道那是什么,那么使用函数委托给它应该很简单.但是我在手册中找不到这样的功能.

Chr*_*sen 17

说明这个的文件compdef:

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

compdef _pids foo
Run Code Online (Sandbox Code Playgroud)

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

compdef _git g
Run Code Online (Sandbox Code Playgroud)

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

compdef '_dispatch git git' g
Run Code Online (Sandbox Code Playgroud)

  • 知道如何调整`compdef'_dispatch git git'g`以使g自动完成像git-status,而不仅仅是git? (4认同)