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: insecure directories”警告,你可能需要运行此命令
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