foo
1つ以上のファイル名と3つのオプションの組み合わせを使用するサンプルコマンドがあります。また、オプションはコマンドラインのどこからでも(ファイル名の前、後、間)指定できます。
foo --bbb file.txt --aaa file2.txt --ccc
ポーションを指定する完了ファイルがあります。
#compdef foo
local -a args
args+=(
'--aaa'
'--bbb'
'--ccc'
)
--optionsを使用してローカルファイルを完成させるには、最後に何を追加する必要がありますか?
答え1
電話してもいいcompadd
より多くの完了時間を宣言するには、複数回ビルドできます。通常、これはいくつかの方法の1つで発生します。「新しい」完成システムのアクセシビリティ機能。
最も簡単な方法はとをcompadd
呼び出すことです_files
。
#compdef foo
local -a args
args=(--aaa --bbb --ccc)
compadd -- $args
_files
compadd
次のヘルパー関数を呼び出す必要があります。_describe
状況に合わせて完成を構成でき、説明があります。
#compdef foo
local args
args=('--aaa:Enable aye' '--bbb:Enable bee' '--ccc:Enable sea')
_describe -o 'Options' args
_files
これ_arguments
関数を使用すると、コマンド補完をより簡単に指定できますが、単純な場合には大きな利点はありません。コマンドが後続--
のすべての項目が--
オプションではなくファイル名であることを示すことをサポートしている場合(ダッシュで始まっても)、必ずそれを使用してください。これが_arguments
s-S
オプションの役割です。 before オプションは、その*
オプションがないと、そのオプションが複数回表示されることを示します。そのオプションがすでに存在する場合、そのオプションは再提供されません。
#compdef foo
_arguments -S \
'*--aaa[Enable aye]' \
'*--bbb[Enable bee]' \
'*--ccc[Enable sea]' \
'*:file:_files'
コマンドが--help
GNUが確立した事実上の標準に近い形式でヘルプ印刷をサポートしている場合は、解析された_arguments
出力を知らせることができ、出力から推論できないより洗練された動作を--help
指定するだけです。--help
#compdef foo
_arguments --
出力から推論される以外に何も必要ない場合は、--help
完成関数を定義する必要はありません。_gnu_generic
コマンドの完成機能として。
compdef _gnu_generic foo