macOS 安裝 zsh-completions 輸入指令自動完成

macOS 使用 zsh 要自動完成的話要安裝 zsh-completions,macOS Mojave (10.14) 之前的版本預設 shell 是 bash。從 macOS Catalina (10.15.x) 開始使用 zsh 做為預設登入 shell,想要知道你現在用的 shell 是哪種的話可以透過 echo $SHELL 指令來了解,以我的電腦 10.15.7 為例的話

1
2
$ echo $SHELL
/bin/zsh

這表示目前使用的 shell 是 zsh
如何變更預設 shell 可以看這篇 Apple 官方的教學

但是預設 zsh 下輸入指令按 tab 時沒有自動完成的話會很不好使用,所以以下介紹怎麼安裝 zsh 自動完成,
brew 安裝 zsh-completions 指令如下,

1
brew install zsh-completions

安裝最後的畫面如下,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
==> Pouring zsh-completions--0.33.0.all.bottle.tar.gz
==> Caveats
To activate these completions, add the following to your .zshrc:

autoload -Uz compinit
compinit

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 -R go-w '/usr/local/share/zsh'

zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Summary
🍺 /usr/local/Cellar/zsh-completions/0.33.0: 147 files, 1.2MB

在 ~/.zshrc 添加以下內容

1
2
autoload -Uz compinit
compinit

之後開新的終端機,遇到下面這樣的錯誤訊息需要執行 chmod -R go-w '/usr/local/share/zsh' 可以解決,

1
2
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

這樣就搞定囉!開新的終端機試試效果吧!