Pregunta

Zsh finalización es una bestia bastante complejo, y me encuentro con el hombre-página muy difícil de leer, sobre todo que le falta (simple) ejemplos de todas las diversas formas optspec etc. No he logrado encontrar nada en línea a mí mismo sin embargo, tan ayuda sería muy apreciada.

A modo de ejemplo, esto es lo que estoy luchando por el momento, y el hombre-página zshcompsys no ofrece aclaraciones. Tengo

#compdef mtt2

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

mtt2 <TAB> Ahora, cuando escribo foo Sólo me ofrecieron, y bar baz como terminaciones, por qué no -h, --help, etc, así? ¿Qué magia necesito para pasar a _arguments con el fin de ser ofrecido todas las posibilidades?

¿Fue útil?

Solución

Se necesita comenzar argumento de que usted complete con guión (quiero decir que el argumento de que escribe a prueba, no argumento _arguments). Debe buscar ya sea en zstyle, intenta pasar -h y otros como :foobars: o incluso utilizar directamente compadd. Ejemplos:

  1. con compadd:
    #compdef test
    A=( -h --help -V --version foo bar baz )
    compadd -a A
    
  2. -h y otros Pasando al igual que :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. El estilo de terminación
  4. Controles zstyle. Se describe en «EJECUCIÓN DE CONFIGURACIÓN DEL SISTEMA» en la sección man zshcompsys y probablemente tiene una opción que permitirá completar de interruptores, pero no sé controla qué opciones que.

Otros consejos

Me pareció que para ser una buena introducción: http: //www.linux-mag. com / id / 1106 /

Está detrás de un inicio de sesión de la pared, pero no se ha especificado ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top