13

Zsh 完成是一个相当复杂的野兽,我发现手册页很难阅读,特别是它缺少所有各种 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. 传球-h和其他人就像:foobars:
    #compdef 测试
    A=( -h --help -V --version )
    _参数\
        - 美食吧\
        ':foobars:(foo bar baz)' \
        - 选项 \
        “:参数:($A)”
    
    或者
    A=( -h --help -V --version foo bar baz )
    _参数\
        “:::($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 回答