autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
source /path/to/your/bash_completion_script
Estoy ejecutando zsh zsh 5.0.2 (x86_64-apple-darwin13.0)
sin ~ / .zshrc y la secuencia anterior funcionó en un shell zsh recién generado.
Gracias al script git-completation.bash por la pista: D
Siga leyendo para obtener más detalles sobre las 3 líneas anteriores:
Bash tiene impresionantes en apoyo finalización automática incorporada, pero los scripts Bash autocompletar no trabajan directamente zsh zsh como el medio ambiente no tiene la función de autocompletar de bash esenciales funciones auxiliares como compgen
, complete
. Lo hace en un esfuerzo por mantener rápida la sesión de zsh.
En estos días, zsh se envía con scripts de finalización apropiados como compinit
y bashcompinit
que tienen las funciones necesarias para admitir scripts de autocompletar bash.
autoload <func_name>
: Tenga en cuenta que la carga automática se define en zsh y no en bash. autoload
busca un archivo nombrado en las rutas de directorio devueltas por el fpath
comando y marca una función para cargar el mismo cuando se invoca por primera vez.
- -U: ignore cualquier alias al cargar una función como compinit o bashcompinit
- + X: Simplemente cargue la función nombrada ahora y no la ejecute
Por ejemplo, en mi sistema echo $fpath
devuelve /usr/share/zsh/site-functions
y /usr/share/zsh/5.0.5/functions
y ambos compinit
y bashcompinit
están disponibles en /usr/share/zsh/5.0.5/functions
.
Además, para la mayoría de las personas, es posible que solo autoload -U +X bashcompinit && bashcompinit
sea necesario porque algún otro script como git autocomplete o el suyo propio ~/.zshrc
pueden estar funcionando autoload -U +X compinit && compinit
, pero es seguro ejecutar ambos.