setoya-blog

システム開発技術、データ分析関連でお勉強したことや、山奥生活を綴る、テンション低めなブログです。

macOSにzsh-completionをインストールして初期設定をする

【注意!】M1 Macでは以下と異なるので、インストール後に、brew info zsh-completionを実行して、それに従うこと

公式手順のとおりに従うだけなんだけど、新しいMacを買うたびに、いつも調べようとするので、備忘録のために手順をアウトプットしておく。

公式サイトは以下。 github.com

まずは、homebrew でインストール

% brew install zsh-completion

インストールすると以下のメッセージがでるので、これを無視せずに実施するのが重要。 "zsh compinit: insecure directories"への対処法についても、brewでインストールしたあとのメッセージに対処法がちゃんと以下のように書かれている(が後述の対応が必要だった)。

==> Caveats
To activate these completions, add the following to your .zshrc:

  if type brew &>/dev/null; then
    FPATH=$(brew --prefix)/share/zsh-completions:$FPATH

    autoload -Uz compinit
    compinit
  fi

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'

なので、言われたとおりに、.zshrcに以下を追加し、

  if type brew &>/dev/null; then
    FPATH=$(brew --prefix)/share/zsh-completions:$FPATH

    autoload -Uz compinit
    compinit
  fi

以下でzcompdumpをリビルドし、

%   rm -f ~/.zcompdump; compinit

補完ファイルが入っているディレクトリの権限を変更しておく。ちなみに、chmod go-w は、自分以外の人(groupとothers)は書き込みできなくなる設定にするもの。

% chmod go-w '/usr/local/share'

と、思ったら、/usr/local/shareの権限を変えてもだめっぽいので、結局compauditコマンドで表示されたディレクトリに対して、以下のようにした。

% chmod go-w '/usr/local/share'
% chmod go-w '/usr/local/share/zsh'
% chmod go-w '/usr/local/share/zsh/site-functions'

ちなみに、このあと自分はいつもbrew install gitもする。 brewでgitをインストールしておくと、zsh-completion用のgitの設定ファイルが/usr/local/share/zsh/site-functions以下に置かれて便利なので。