質問
ZSHの完成はかなり複雑な獣であり、私はマンページを読むのが非常に難しいと思います。特に、すべてのさまざまなOptSpecフォームなどの(単純な)例などがありません。最も感謝しています。
例として、ここに私が今苦労しているものがあります、そして zshcompsys
マンページは説明を提供しません。私は持っています
#compdef mtt2
_arguments -s : \
'-h' '--help' \
'-V' '--version' \
':foobars:(foo bar baz)'
さて、私が入力するとき mtt2 <TAB>
私はただ提供されています foo
, bar
と baz
完了として、なぜそうではありません -h
, --help
, 、なども?どんな魔法を渡す必要がありますか _arguments
すべての可能性を提供されるために?
解決
ダッシュを完了したという議論を開始する必要があります(私はあなたがテストするために入力するという議論を意味します、 _arguments
口論)。どちらかを見る必要があります zstyle
, 、合格してみてください -h
そして他の人は好きです :foobars:
または直接使用します compadd
. 。例:
- compaddを直接使用する:
#compdef test A=( -h --help -V --version foo bar baz ) compadd -a A
- 通過
-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)"
zstyle
完了スタイルを制御します。 «完了システム構成»セクションで説明されていますman zshcompsys
おそらく、スイッチの完了を可能にするオプションがありますが、どのオプションがそれを制御するかはわかりません。
他のヒント
私はこれが良い紹介であることがわかりました: http://www.linux-mag.com/id/1106/
それはログイン壁の後ろにありますが、あなたは指定しませんでした...
所属していません StackOverflow