autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
source /path/to/your/bash_completion_script
Sto eseguendo zsh zsh 5.0.2 (x86_64-apple-darwin13.0)
senza ~ / .zshrc e la sequenza sopra ha funzionato in una shell zsh appena generata.
Grazie allo script git-completamento.bash per il suggerimento: D
Continua a leggere per maggiori dettagli sulle 3 righe precedenti:
Bash ha un fantastico supporto per il completamento automatico integrato, ma gli script di completamento automatico bash non funzionano direttamente su zsh poiché l'ambiente zsh non ha le funzioni essenziali di supporto per il completamento automatico di bash come compgen
,complete
. Lo fa nel tentativo di mantenere veloce la sessione di zsh.
In questi giorni zsh viene fornito con script di completamento appropriati come compinit
ebashcompinit
che hanno le funzioni richieste per supportare gli script di completamento automatico bash.
autoload <func_name>
: Nota che il caricamento automatico è definito in zsh e non in bash. autoload
cerca un file denominato nei percorsi di directory restituiti da fpath
comando e contrassegna una funzione da caricare la stessa quando viene invocata per la prima volta.
- -U: Ignora qualsiasi alias durante il caricamento di una funzione come compinit o bashcompinit
- + X: basta caricare la funzione denominata fow ora e non eseguirla
Ad esempio, sul mio sistema echo $fpath
restituisce /usr/share/zsh/site-functions
e /usr/share/zsh/5.0.5/functions
e entrambi compinit
e bashcompinit
sono disponibili all'indirizzo /usr/share/zsh/5.0.5/functions
.
Inoltre, per la maggior parte delle persone potrebbe essere autoload -U +X bashcompinit && bashcompinit
richiesto solo perché alcuni altri script come git autocomplete o il proprio ~/.zshrc
potrebbero essere autoload -U +X compinit && compinit
eseguiti, ma è sicuro eseguirli entrambi.