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 compinit
e bashcompinit
que 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. autoload
procura um arquivo nomeado nos caminhos de diretório retornados pelo fpath
comando 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 $fpath
retornos /usr/share/zsh/site-functions
e /usr/share/zsh/5.0.5/functions
e ambos compinit
e bashcompinit
estã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, ~/.zshrc
pode estar fazendo autoload -U +X compinit && compinit
, mas é seguro executar os dois.