In OS X, is there any way to have Zsh (I'm using Oh-my-zsh) tab-complete formulas?

E.g.

$ brew install em<TAB>

could expand to:

$ brew install emacs
up vote 5 down vote accepted

Homebrew provides it's own completion. You just need to link the file $(brew --prefix)/Library/Contributions/brew_zsh_completion.zsh to _brew somewhere in your $fpath.(See comment at the start of https://github.com/Homebrew/homebrew/blob/master/Library/Contributions/brew_zsh_completion.zsh)

zsh-completions recently removed its _brew completion in favour of that file, see https://github.com/zsh-users/zsh-completions/issues/305.


Update 2016-04-19: At some point(1) Homebrew updated its handling of zsh completion again. Now if you install zsh via Homebrew it should "just work". The file is installed to /usr/local/share/zsh/site-functions/_brew.

  • For anyone interested in $fpath and $FPATH to accommodate these new completion functions in Zsh, this Q&A may be informative. – Amelio Vazquez-Reina Feb 8 '16 at 16:48

Try installing the zsh-completions formula.

$ brew info zsh-completions
zsh-completions: stable 0.10.0, HEAD
https://github.com/zsh-users/zsh-completions
Not installed
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/zsh-completions.rb
==> Caveats
To activate these completions, add the following to your .zshrc:

  fpath=(/usr/local/share/zsh-completions $fpath)

You may also need to force rebuild `zcompdump`:

  rm -f ~/.zcompdump; compinit

Additionally, if you receive "zsh compinit: insecure directories" warnings when attempting
to load these completions, you may need to run this:

  chmod go-w /usr/local/share

It also looks like zsh may have some compatibility with bash completions. You could try that in conjunction with the bash-completions formula.

  • 2
    compinit -i should solve the the "insecure directories" warnings rather than chmod. – Guy Hughes May 16 '15 at 2:23
  • for the "insecure directories" error, use compaudit to determine which directories should have their permissions changed – user2561747 May 11 at 3:32

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.