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 имеет потрясающую встроенную поддержку автозавершения, но сценарии автозаполнения bash не работают напрямую zsh, поскольку среда zsh не имеет необходимых вспомогательных функций bash для автозаполнения, таких как compgen
, complete
. Это делается для того, чтобы поддерживать сессию Zsh быстрой.
В настоящее время zsh поставляется с соответствующими сценариями завершения, такими как compinit
и bashcompinit
, которые имеют необходимые функции для поддержки сценариев автозаполнения bash.
autoload <func_name>
: обратите внимание, что автозагрузка определяется в zsh, а не в bash. autoload
ищет файл с именем в путях к каталогам, возвращаемым командой fpath
, и помечает функцию, которая загружает его при первом вызове.
- -U: Игнорировать любые псевдонимы при загрузке функции, такой как compinit или bashcompinit
- + X: Просто загрузите указанную функцию сейчас и не выполняйте ее
Например, в моей системе 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
, потому что какой-то другой скрипт, такой как git autocomplete или их собственный ~/.zshrc
, может выполнять autoload -U +X compinit && compinit
, но можно безопасно запустить оба из них.