autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
source /path/to/your/bash_completion_script
Я запускаю zsh zsh 5.0.2 (x86_64-apple-darwin13.0)
без ~ / .zshrc, і вищевказана послідовність працювала у щойно створеній оболонці zsh.
Завдяки скрипту git-complete.bash для підказки: D
Прочитайте, щоб отримати докладнішу інформацію над 3 рядками:
Bash має дивовижний у вбудованій підтримкою автоматичного завершення , але скрипти Баш автозаповнення не працюють безпосередньо ЗШ , як ЗШ середовище не має істотного Баш автозаповнення допоміжні функції , такі як compgen
, complete
. Це робиться для того, щоб швидше підтримувати сеанс zsh.
У наші дні zsh постачається з відповідними сценаріями завершення, такими як compinit
і bashcompinit
які мають необхідні функції для підтримки сценаріїв автозаповнення bash.
autoload <func_name>
: Зверніть увагу, що автозавантаження визначається у zsh, а не в bash. autoload
шукає файл, названий у шляхах до каталогу, що повертаються fpath
командою, і позначає функцію для завантаження такою ж, коли її вперше викликано.
- -U: Ігнорувати будь-які псевдоніми під час завантаження такої функції, як compinit або bashcompinit
- + X: Просто завантажте названу функцію fow зараз і не виконуйте її
Наприклад , на моїй системі echo $fpath
повернень /usr/share/zsh/site-functions
і /usr/share/zsh/5.0.5/functions
і як compinit
і bashcompinit
доступні в /usr/share/zsh/5.0.5/functions
.
Крім того, для більшості людей , може бути тільки autoload -U +X bashcompinit && bashcompinit
потрібно тому , що якийсь -небудь інший сценарій , як мерзотника автозаповнення або їх власні ~/.zshrc
може робити autoload -U +X compinit && compinit
, але це безпечно просто запустити їх обох.