하위 명령 뒤의 자동 완성 플래그

하위 명령 뒤의 자동 완성 플래그

, 및 와 luarocks같은 일련의 하위 명령과 플래그가 포함된 프로그램을 호출합니다 . 마지막으로 명령은 다음과 같습니다.buildinstallmake

# 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

관련 정보