質問

ZSHの完成はかなり複雑な獣であり、私はマンページを読むのが非常に難しいと思います。特に、すべてのさまざまなOptSpecフォームなどの(単純な)例などがありません。最も感謝しています。

例として、ここに私が今苦労しているものがあります、そして zshcompsys マンページは説明を提供しません。私は持っています

#compdef mtt2

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

さて、私が入力するとき mtt2 <TAB> 私はただ提供されています foo, barbaz 完了として、なぜそうではありません -h, --help, 、なども?どんな魔法を渡す必要がありますか _arguments すべての可能性を提供されるために?

役に立ちましたか?

解決

ダッシュを完了したという議論を開始する必要があります(私はあなたがテストするために入力するという議論を意味します、 _arguments 口論)。どちらかを見る必要があります zstyle, 、合格してみてください -h そして他の人は好きです :foobars: または直接使用します compadd. 。例:

  1. compaddを直接使用する:
    #compdef test
    A=( -h --help -V --version foo bar baz )
    compadd -a A
    
  2. 通過 -h そして他の人は好きです :foobars::
    #compdef test
    A=( -h --help -V --version )
    _arguments \
        - foobars \
        ':foobars:(foo bar baz)' \
        - options \
        ":arguments:($A)"
    
    また
    A=( -h --help -V --version foo bar baz )
    _arguments \
        ":::($A)"
    
  3. zstyle 完了スタイルを制御します。 «完了システム構成»セクションで説明されています man zshcompsys おそらく、スイッチの完了を可能にするオプションがありますが、どのオプションがそれを制御するかはわかりません。

他のヒント

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

それはログイン壁の後ろにありますが、あなたは指定しませんでした...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top