autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
source /path/to/your/bash_completion_script
Tôi đang chạy zsh zsh 5.0.2 (x86_64-apple-darwin13.0)
mà không có bất kỳ ~ / .zshrc nào và trình tự trên đã hoạt động trong một trình bao zsh mới tạo.
Cảm ơn git-complete.bash script cho gợi ý: D
Đọc tiếp để biết thêm chi tiết về 3 dòng trên:
Bash có tuyệt vời trong xây dựng hỗ trợ tự động hoàn tất nhưng các kịch bản bash autocomplete không làm việc trực tiếp Zsh như môi trường zsh không có autocomplete bash thiết yếu chức năng helper thích compgen
, complete
. Nó làm như vậy với nỗ lực giữ cho phiên zsh nhanh.
Ngày nay, zsh được vận chuyển với các tập lệnh hoàn thành thích hợp như compinit
và bashcompinit
có các chức năng cần thiết để hỗ trợ các tập lệnh tự động hoàn thành bash.
autoload <func_name>
: Lưu ý rằng autoload được định nghĩa trong zsh chứ không phải bash. autoload
tìm kiếm một tệp có tên trong các đường dẫn thư mục được trả về bởi fpath
lệnh và đánh dấu một hàm để tải giống như khi nó được gọi lần đầu tiên.
- -U: Bỏ qua bất kỳ bí danh nào khi tải một hàm như compinit hoặc bashcompinit
- + X: Chỉ cần tải hàm fow được đặt tên ngay bây giờ và không thực thi nó
Ví dụ trên hệ thống của tôi echo $fpath
trả lại /usr/share/zsh/site-functions
và /usr/share/zsh/5.0.5/functions
và cả hai compinit
và bashcompinit
có sẵn tại /usr/share/zsh/5.0.5/functions
.
Ngoài ra, đối với hầu hết mọi người, chỉ có thể được autoload -U +X bashcompinit && bashcompinit
yêu cầu vì một số tập lệnh khác như git autocomplete hoặc của riêng họ ~/.zshrc
có thể đang làm autoload -U +X compinit && compinit
, nhưng sẽ an toàn nếu chỉ chạy cả hai.