, 및 와 luarocks
같은 일련의 하위 명령과 플래그가 포함된 프로그램을 호출합니다 . 마지막으로 명령은 다음과 같습니다.build
install
make
# luarocks install varargs --server=https://example.com/`
$ luarocks make ./varargs.rockspec
$ luarocks pack ./varargs.rockspec
zsh autocomplete 명령은 및 와 같은 플래그 목록을 _arguments
가져와서 다음과 같이 설명을 생성할 수 있습니다.-s
--long
_arguments "-s[short flag]" "--long[long flag]"
install
그러나 명령에 유사한 하위 명령이 포함되어 있으면 이 방법이 제대로 작동하지 않으므로 luarocks install <tab>
입력할 때 플래그 목록이 나타나지 않습니다._argument
플래그 목록에 포함되지 않은 하위 명령을 무시하려면 어떻게 해야 합니까 ?
참고로 현재 코드는 다음과 같습니다.
#compdef luarocks
local curcontext="$curcontext" state line
typeset -A opt_args
local -a lr_commands
lr_commands=(
build config doc
download help install lint
list make new_version pack
path purge remove search
show unpack upload write_rockspec
)
local -a generic_args
generic_args=(
"--long[long]"
"-s[short]"
)
_arguments \
'1: :->cmd'\
'*: :->args'
case $state in
cmd)
_arguments "1:Commands:($lr_commands)"
;;
args)
_arguments $generic_args
;;
esac