brew
Shell 補完Homebrew 附帶 brew
命令的補完定義。有些套件也提供它們自己的程式的補完定義。
目前支援 zsh
、bash
和 fish
。
您必須手動設定您的 shell 以啟用其補完支援。這是因為 Homebrew 管理的補完儲存在 HOMEBREW_PREFIX
中,您的系統 shell 可能不知道它,而且由於難以自動設定 bash
和 zsh
補完,因此 Homebrew 安裝程式不會為您執行此動作。
外部 Homebrew 命令的 Shell 補完不會自動安裝。若要選擇使用外部命令的補完(如果提供),需要透過執行 brew completions link
將它們連結到 HOMEBREW_PREFIX
。
bash
中設定補完若要在 bash
中使用 Homebrew 的補完,您必須在 shell 啟動時取得定義。將下列內容新增到您的 ~/.bash_profile
(或如果不存在,~/.profile
)
if type brew &>/dev/null
then
HOMEBREW_PREFIX="$(brew --prefix)"
if [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]]
then
source "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh"
else
for COMPLETION in "${HOMEBREW_PREFIX}/etc/bash_completion.d/"*
do
[[ -r "${COMPLETION}" ]] && source "${COMPLETION}"
done
fi
fi
如果您安裝 bash-completion
公式,這將自動取得補完的初始化指令碼(因此您不需要遵循公式警告中的說明)。
如果您使用 Homebrew 的 bash
作為您的 shell(即 bash
>= v4),您應該改用 bash-completion@2
公式。
zsh
中設定補完若要在 zsh
中使用 Homebrew 的補完,您必須在初始化 zsh
的補完功能之前,將 Homebrew 管理的 zsh/site-functions
路徑插入您的 FPATH
中。將下列內容新增到您的 ~/.zshrc
if type brew &>/dev/null
then
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
autoload -Uz compinit
compinit
fi
這必須在呼叫 compinit
之前完成。請注意,如果您使用 Oh My Zsh,當您取得 oh-my-zsh.sh
時,它會為您呼叫 compinit
。在這種情況下,請將下列程式碼行新增到您的 ~/.zshrc
中,在您取得 oh-my-zsh.sh
之前,而不是上述程式碼行
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
您可能還需要強制重新建置 zcompdump
rm -f ~/.zcompdump; compinit
此外,如果您在嘗試載入這些完成時收到「zsh compinit:不安全的目錄」警告,您可能需要執行此操作
chmod -R go-w "$(brew --prefix)/share"
fish
中設定完成如果您使用 Homebrew 的 fish
,則不需要任何設定。好棒!
如果您的 fish
來自其他地方,請將下列內容新增到您的 ~/.config/fish/config.fish
if test -d (brew --prefix)"/share/fish/completions"
set -p fish_complete_path (brew --prefix)/share/fish/completions
end
if test -d (brew --prefix)"/share/fish/vendor_completions.d"
set -p fish_complete_path (brew --prefix)/share/fish/vendor_completions.d
end