Domanda

Zsh completamento è una bestia piuttosto complesso, e trovo l'uomo-page molto difficile da leggere, in particolare che manca (semplice) esempi di tutte le varie forme optspec ecc io non sono riuscito a trovare nulla in linea me stesso eppure così l'aiuto sarebbe apprezzato.

A titolo di esempio, ecco cosa sto lottando con in questo momento, e l'uomo-page zshcompsys non offre alcun chiarimento. Ho

#compdef mtt2

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

mtt2 <TAB> Ora, quando digito foo Sono solo offerto, bar e baz come completamenti, perché non -h, --help, ecc, così? Che magia ho bisogno per passare a _arguments al fine di offrire tutte le possibilità?

È stato utile?

Soluzione

È necessario avviare argomento che si completa con il precipitare (intendo dire che l'argomento che si digita a prova, non tesi _arguments). Si dovrebbe guardare sia zstyle, tenta di passare -h e altri, proprio come :foobars: o anche utilizzare direttamente compadd. Esempi:

  1. Direttamente utilizzando compadd:
    #compdef test
    A=( -h --help -V --version foo bar baz )
    compadd -a A
    
  2. Passando -h e altri, proprio come :foobars::
    #compdef test
    A=( -h --help -V --version )
    _arguments \
        - foobars \
        ':foobars:(foo bar baz)' \
        - options \
        ":arguments:($A)"
    
    o
    A=( -h --help -V --version foo bar baz )
    _arguments \
        ":::($A)"
    
  3. Controlli zstyle stile completamento. E 'descritto nella sezione «ESECUZIONE CONFIGURAZIONE DEL SISTEMA» in man zshcompsys e probabilmente ha un'opzione che consentirà il completamento di interruttori, ma non so controlli di opzione.

Altri suggerimenti

Ho trovato questo per essere una buona introduzione: http: //www.linux-mag. com / id / 1106 /

E 'una procedura di accesso a parete, ma non ha specificato ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top