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, але це безпечно просто запустити їх обох.