zsh: terminaciones de uso de comando X cuando escribo comando Y
-
26-09-2019 - |
Pregunta
En zsh, tengo una llamada g
función que actúa como esto:
- sin argumentos, llamada
git status
- con uno o más argumentos, delegado de git con todos los argumentos dados - es decir, la llamada
git $@
Me gustaría que las terminaciones de tabulación para g
a ser exactamente el mismo que para git
. Puedo lograr esto con alias g=git
, pero que no permite que llame a status
por defecto (el primer punto anterior).
¿Cómo se puede delegar a la realización de git
?
En bash, simplemente hice complete -F _git g
que re-usos función de finalización de git. Con zsh, miradas de finalización de git mucho más complejo, y me wa no poder encontrar una solución similar.
supongo que hay alguna función en zsh decir "pretendo Mecanografié comando [x], lo que podría completar a?". Si supiera lo que era, debería ser bastante simple de usar una función de delegado a la misma. Pero he encontrado ninguna tal función en los manuales.
Solución
La documentación de compdef
dice lo siguiente:
El
compdef
función se puede utilizar para asociar funciones de completado existentes con nuevos comandos. Por ejemplo,compdef _pids foo
Sin embargo, adaptándolo (_git
es la función de finalización habitual para git ) no ha dado ningún resultado trabajando para mí (incluso después de _git
había sido autocargado):
compdef _git g
Yo era capaz de conseguir que funcione a través de _dispatch
sin embargo:
compdef '_dispatch git git' g