我有一个名为,
的脚本,它接受一组有限的子命令。假设这个集合是(foo bar qux)
。以下是该脚本可接受的CLI调用:
, foo
, bar
, qux
(以上每个参数都可以在右侧接受进一步的可选参数)。
这个脚本在macOS上工作的最小的zsh完成代码是什么?这样,当我输入,
和<TAB>
时,shell将自动完成这三个选项:foo、bar和qux。
最小在,
命令中添加zsh
完成的步骤:
-
启用
compinit
autoload -U compinit
-
使能
compdef
compinit
-
定义一个函数,用给定的一组值完成/的第一个参数。
_,() { _arguments -C '1: :(foo bar qux)'; }
-
将前面的功能
_,
设置为,
命令的补全功能:compdef _, ,
现在如果你输入逗号空格制表符,zsh
应该输出:
bar foo qux
除了可以为每个子命令bar
/foo
/qux
添加进一步的补全;看一下这个文档化的例子。