Зш ресурс завершения? - PullRequest
       25

Зш ресурс завершения?

11 голосов
/ 26 сентября 2010

Завершение Zsh - довольно сложный зверь, и я считаю, что справочную страницу очень трудно читать, особенно в ней отсутствуют (простые) примеры всех различных форм optspec и т. Д. Я сам пока не смог найти что-либо в Интернете, поэтомуПомощь была бы очень признательна.

В качестве примера вот то, с чем я сейчас борюсь, и страница руководства zshcompsys не дает никаких пояснений.У меня

#compdef mtt2

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

Теперь, когда я набираю mtt2 <TAB>, мне предлагаются только foo, bar и baz в качестве дополнений, почему бы не -h, --help и т. Д.,также?Какую магию мне нужно передать _arguments, чтобы получить все возможности?

Ответы [ 2 ]

5 голосов
/ 26 сентября 2010

Вам нужно начинать аргумент, который вы вводите с дефисом (я имею в виду тот аргумент, который вы вводите для проверки, а не _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 и, вероятно, имеет опцию, которая включает завершение переключателей, но я не знаю, какая опция управляет этим.
4 голосов
/ 05 июня 2011

Мне показалось, что это хорошее введение: http://www.linux -mag.com / id / 1106 /

Это за стеной входа, но вы не указали...

...