2

假设我有一个脚本foo,可以称为:

foo git clone http://example.com

或作为:

foo print 12

等等

我怎样才能让一个compdef委托到$argv[0]这里来让它处理完成?

4

1 回答 1

3

您可以通过调用该函数重新调度到正常的完成系统_normal,但首先您需要修改一些状态,以便它会忽略您的程序名称和可能的参数。一个非常简单的版本可以通过以下方式完成:

#compdef foo
shift words
(( CURRENT-- ))
_normal

如果您需要变得更复杂(这很可能),您可以查看其他调用 的命令的完成定义_normal,例如envsudo或的完成fakeroot

于 2012-11-25T01:44:35.877 回答