zsh 完了: カスタムスクリプトの完全なオプション

zsh 完了: カスタムスクリプトの完全なオプション

カスタムスクリプトのzsh完了ルールがあります。私のスクリプトは、0個以上のオプション(で始まる-)と0個以上の任意の文字列(パターン)を使用できます。

_arguments -S : \
    '--foo' \
    '--bar' \
    '1:pattern:'

この規則は部分的にのみ有効で、形式は次のとおりです。

script "somestring" <TAB>

--fooまたは--barおよび--f<TAB>オートコンプリートを提供--foo

しかし、

script <TAB>

何もしません。オプションを一覧表示したい( --foo, --bar)

明示的に起動しても--オプションが表示されますが、オートコンプリートされません。入力していて、--f<TAB>必要なオプションがあいまいでない場合も同様です。

script --f<TAB>

自動的に行わなければならない--foo

つまり、要約stringすれば何でもできるので、自動的に行われることはありません。だから、文字列/パターンを入力するかどうかにかかわらず、キーを押したときに--optionsをオートコンプリートしたいと思います。

-私の考えでは、特定の方法で始まるすべての項目は文字列ではなくオプションなので、利用可能なオプションから自動補完する必要があることを完成ルールに指定する必要があります。

ベストアンサー1

私に合ったものを見つけました。

___script() { _arguments -S : }
__script() { _arguments -S : --foo --bar 1:pattern:___script }
compdef __script script

おすすめ記事