Question

fin zsh est une bête assez complexe, et je trouve l'homme pages très difficile à lire, surtout il manque (simple) des exemples de toutes les différentes formes optspec etc. Je n'ai pas réussi à trouver quoi que ce soit encore moi-même en ligne afin aide serait très appréciée.

À titre d'exemple, voici ce que je me bats avec pour le moment, et l'homme zshcompsys page ne propose pas de précisions. J'ai

#compdef mtt2

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

Maintenant, quand je tape mtt2 <TAB> je suis seulement offert foo, bar et baz complétions, pourquoi ne pas -h, --help, etc, ainsi? Quelle magie ai-je besoin de passer à _arguments afin d'offrir toutes les possibilités?

Était-ce utile?

La solution

Vous devez commencer l'argument que vous avez terminé avec le tiret (je veux dire cet argument que vous tapez test, pas l'argument _arguments). Vous devriez regarder soit zstyle, essayez de passer -h et d'autres comme :foobars: ou même utiliser directement compadd. Exemples:

  1. Directement à l'aide compadd:
    #compdef test
    A=( -h --help -V --version foo bar baz )
    compadd -a A
    
  2. En passant -h et d'autres comme :foobars::
    #compdef test
    A=( -h --help -V --version )
    _arguments \
        - foobars \
        ':foobars:(foo bar baz)' \
        - options \
        ":arguments:($A)"
    
    ou
    A=( -h --help -V --version foo bar baz )
    _arguments \
        ":::($A)"
    
  3. contrôles zstyle style fin. Il est décrit dans la section «CONFIGURATION DU SYSTÈME ACHÈVEMENT de man zshcompsys dans et a probablement une option qui permettra l'achèvement des commutateurs, mais je ne sais pas quels contrôles d'option.

Autres conseils

J'ai trouvé être une bonne introduction: http: //www.linux-mag. com / id / 1106 /

Il se cache derrière un mur connexion, mais vous ne l'avez pas précisé ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top