zsh 還未正式支援 cap (Capistrano) 自動完成,不過以下專案有實作:

  • zsh-users/zsh-completions
    準官方的 _cap function,能補全命令列參數和 tasks。 不過沒做快取,使用上有延遲感。
  • oh-my-zsh
    只能補 tasks,且不包含 task 的說明。
    有快取,會在 Rails 目錄下存一個 .cap_tasks~ 暫存檔,當 config/deploy.rb 變動時更新。
    問題是比較過時,至少要等 Pull Request #367 後才支援 Capistrano 2.0。

我不用 oh-my-zsh,所以我想你們也不會。

好掌握的擴充方式是自己 mkdir 放自己的補全方數,譬如放 ~/.zsh/completions/,就要配合 .zshrc 這麼寫(在 compinit 之前):

# user completion plugins
if [[ -d ~/.zsh/completions ]]; then
  fpath=(~/.zsh/completions $fpath)
fi

我選擇 oh-my-zsh 的 task 補全(不顯示說明,比較簡短)和快取(但換成擺到 tmp/ 裡),加上 zsh-completions 的選項補全。 組成的 ~/.zsh/completions/_capistrano 內容在 zsh _capistrano completeion function — Gist