Mag*_*nus 11 zsh tab-completion
Zsh完成是一个相当复杂的野兽,我发现man-page非常难以阅读,特别是它缺少(简单)所有各种optspec表单等的例子.我还没有设法在网上找到任何东西,所以帮助将是非常感谢.
作为一个例子,这是我目前正在努力解决的问题,并且该zshcompsys手册页没有提供任何澄清.我有
#compdef mtt2
_arguments -s : \
'-h' '--help' \
'-V' '--version' \
':foobars:(foo bar baz)'
Run Code Online (Sandbox Code Playgroud)
现在,当我输入mtt2 <TAB>我只提供foo,bar并baz作为完井,为什么不-h,--help等等,以及?_arguments为了获得所有可能性,我需要传递什么魔力?
你需要开始用dash完成的参数(我的意思是你键入的_arguments参数,而不是参数).你应该看zstyle,试着通过-h和其他人一样:foobars:,甚至直接使用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,可能有一个选项,可以完成开关,但我不知道哪个选项控制它.