13

Zshの補完はかなり複雑な獣であり、manページを読むのは非常に難しいと思います.特に、さまざまなoptspecフォームなどすべての(単純な)例が欠落しています.オンラインで何かを見つけることができなかったので、助けてください.最も高く評価されています。

例として、これが現在私が苦労していることであり、zshcompsysマンページには明確な説明がありません。私は持っている

#compdef mtt2

_arguments -s : \
    '-h' '--help' \
    '-V' '--version' \
    ':foobars:(foo bar baz)'

さて、入力すると、mtt2 <TAB>のみが提供されfoo、補完として、 、barなども提供されないのはなぜですか? すべての可能性を提供するには、どの魔法に渡す必要がありますか?baz-h--help_arguments

4

2 に答える 2

5

ダッシュで完了する引数を開始する必要があります(引数ではなく、テストするために入力する引数を意味します_arguments)。を見てzstyle、渡すようにしてください。-h他の人は を好きなように:foobars:、または直接使用することもできますcompadd。例:

  1. compadd を直接使用:
    #compdef テスト
    A=( -h --help -V --version foo bar baz )
    compadd -a A
    
  2. Passing-hなどのように:foobars::
    #compdef テスト
    A=( -h --help -V --version )
    _arguments \
        - フーバー\
        ':foobars:(foo bar baz)' \
        - オプション \
        ":arguments:($A)"
    
    また
    A=( -h --help -V --version foo bar baz )
    _arguments \
        ":::($A)"
    
  3. zstyle補完スタイルを制御します。の «COMPLETION SYSTEM CONFIGURATION» セクションで説明されてman zshcompsysおり、おそらくスイッチの完了を有効にするオプションがありますが、どのオプションがそれを制御するのかわかりません。
于 2010-09-26T08:59:53.170 に答える
4

これは良い紹介であることがわかりました:http://www.linux-mag.com/id/1106/

ログインウォールの背後にありますが、指定していません...

于 2011-06-05T02:39:07.137 に答える