change - zsh: usar terminaciones para el comando X cuando escribo el comando Y
zsh install linux (1)
En zsh, tengo una función llamada g
que actúa así:
- Sin argumentos, llamar al
git status
- con uno o más argumentos, delegue a git con todos los argumentos dados, es decir, llame a
git $@
Me gustaría que las terminaciones de la pestaña para g
sean exactamente las mismas que para git
. Puedo lograr esto con el alias g=git
, pero eso no me permite llamar al status
por defecto (el primer punto arriba).
¿Cómo puedo delegar a la finalización de git
?
En bash, simplemente complete -F _git g
que reutiliza la función de finalización de git. Con zsh, la finalización de git parece mucho más compleja, y no pude encontrar una solución similar.
Supongo que hay una función en zsh para decir "pretender que escribí el comando [x], ¿para qué lo completarías?". Si supiera qué es eso, debería ser lo suficientemente simple como para usar una función para delegarlo. Pero no he encontrado tal función en los manuales.
La documentación para compdef
dice esto:
La función
compdef
se puede usar para asociar funciones de finalización existentes con nuevos comandos. Por ejemplo,
compdef _pids foo
Pero adaptarlo ( _git
es la función de finalización habitual para git ) no produjo un resultado funcional para mí (incluso después de que _git
hubiera _git
automáticamente):
compdef _git g
Aunque pude hacerlo funcionar a través de _dispatch
:
compdef ''_dispatch git git'' g