、、など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