为什么zsh完成工作适用于VBoxManage而不适用于VBoxManage?

为什么zsh完成工作适用于VBoxManage而不适用于VBoxManage?,zsh,zsh-completion,Zsh,Zsh Completion,我已经在ArchLinux上安装了。完成VBoxManage命令似乎可以正常工作,但VBoxManage不行(即只完成本地目录中的文件)。VBoxManage和VBoxManage都是指向VBox可执行文件的符号链接 我的完成定义似乎有第一行 #compdef VBoxManage=vboxmanage VBoxHeadless=vboxheadless 看起来像是某种别名?但它不起作用 我有一个解决办法,就是将上面的行更改为 #compdef VBoxManage=vboxmanage vb

我已经在ArchLinux上安装了。完成
VBoxManage
命令似乎可以正常工作,但
VBoxManage
不行(即只完成本地目录中的文件)。
VBoxManage
VBoxManage
都是指向
VBox
可执行文件的符号链接

我的完成定义似乎有第一行

#compdef VBoxManage=vboxmanage VBoxHeadless=vboxheadless
看起来像是某种别名?但它不起作用

我有一个解决办法,就是将上面的行更改为

#compdef VBoxManage=vboxmanage vboxmanage=vboxmanage VBoxHeadless=vboxheadless vboxheadless=vboxheadless
这似乎很冗长,有一个指定模式的选项,但是像这样别名命令的正确方法是什么?

compdef\u VBoxManage VBoxManage
compdefVboxHeadless VBoxHeadless

在您的
~/.zshrc
中,是为命令指定完成函数的正确方法。出于明显的原因,不建议在源代码中编辑实际函数。

@sw1nn是否接受此答案,以便关闭此问题?