autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
source /path/to/your/bash_completion_script
Estou executando o zsh zsh 5.0.2 (x86_64-apple-darwin13.0) sem nenhum ~ / .zshrc e a sequência acima funcionou em um shell zsh recém-gerado.
Agradecimentos ao script git-completed.bash pela dica: D
Continue lendo para mais detalhes nas 3 linhas acima:
O Bash possui um suporte de preenchimento automático incrível, mas os scripts de preenchimento automático bash não funcionam diretamente zsh, pois o ambiente zsh não possui as funções auxiliares de preenchimento automático bash essenciais compgen, como complete,. Ele faz isso em um esforço para manter a sessão zsh rápida.
Atualmente, o zsh é fornecido com scripts de preenchimento apropriados, como compinite bashcompinitque têm as funções necessárias para oferecer suporte a scripts de preenchimento automático do bash.
autoload <func_name>: Observe que o autoload é definido em zsh e não em bash. autoloadprocura um arquivo nomeado nos caminhos de diretório retornados pelo fpathcomando e marca uma função para carregar a mesma quando for chamada pela primeira vez.
- -U: ignora quaisquer aliases ao carregar uma função como compinit ou bashcompinit
- + X: Basta carregar a função nomeada fow agora e não executá-la
Por exemplo, em meu sistema, os echo $fpathretornos /usr/share/zsh/site-functionse /usr/share/zsh/5.0.5/functionse ambos compinite bashcompinitestão disponíveis em /usr/share/zsh/5.0.5/functions.
Além disso, para a maioria das pessoas, ele só autoload -U +X bashcompinit && bashcompinité necessário porque algum outro script, como git autocomplete ou o seu próprio, ~/.zshrcpode estar fazendo autoload -U +X compinit && compinit, mas é seguro executar os dois.