我如何找出哪个函数用于 zsh 选项卡完成

How do I find out which function is used for zsh tab completion

我想知道 zsh 使用哪个函数来完成命令的制表符。 对于许多命令(makelscd …)我显然可以猜到 _<COMMANDNAME>,但实际上我可能已经用 compdef _mycd cd 覆盖了这个设置。

我想知道这个的原因有两个:

  1. 我可能想阅读一些函数定义,以便在我正在编写的函数中使用其中的一部分
  2. 我想写一个完成函数,它本身调用其他命令的完成(就像 _nice 中的那样,除了我可能不依赖 shift; CURRENT--; _normal

当前补全规则存储在$_comps中。 因此可以用 echo $_comps[cd] 显示 cd 的完成规则,用 functions $_comps[cd].

显示实际的函数定义