Fabric 怎么为 Zsh、Bash、Fish 安装 Shell 补全,让 fabric-ai 也能触发 Tab 补全?
【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric
如果 Fabric 的 Go 版 CLI 已经装好、命令在 PATH 里可以执行,但输入fabric -p或fabric -m时按 Tab 没有任何候选项,说明系统还没有加载 Fabric 提供的补全文件。Fabric 仓库自带 Zsh、Bash、Fish 三个补全文件 和一个自动安装脚本 setup-completions.sh,本条路径的目标就是:把对应 Shell 的补全文件装到系统能找到的位置,并让fabric和fabric-ai两种命令名都能触发 Tab 补全。
先确认前提条件
自动脚本通过command -v检测命令名,它只识别两种情况:
fabric已安装,或fabric-ai已安装
两者都不存在时脚本直接报错退出(Neither 'fabric' nor 'fabric-ai' command found in PATH)。所以运行任何安装步骤前,先确认当前 shell 里能执行fabric或fabric-ai。
路径一:一条命令自动安装(无需克隆仓库)
文档给出的自动安装方式是直接把脚本拉下来执行:
curl -fsSL https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions/setup-completions.sh | sh这条命令会把远端脚本交给sh执行,脚本会向 shell 补全目录写入文件,权限不足时尝试用sudo兜底。如果你不想一上来就改动系统,可以先用 dry-run 模式,它只打印将要执行的命令,不做任何修改:
curl -fsSL https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions/setup-completions.sh | sh -s -- --dry-run脚本执行时会依次做这几件事(来自 docs/Shell-Completions.md):
- 检测装的是
fabric还是fabric-ai; - 从
$SHELL环境变量检测当前 shell(zsh、bash 或 fish); - Zsh 下读取你现有的
$fpath目录,其他 shell 使用标准补全目录; - 把补全文件按命令名写入(
fabric-ai会直接写成_fabric-ai、fabric-ai.bash、fabric-ai.fish之类的文件名); - 结束时打印启用提示。
如果本地没有补全文件(比如就是curl这种用法),脚本会从 GitHub 自动下载三个补全文件。也可以用环境变量覆盖下载源:
FABRIC_COMPLETIONS_BASE_URL="https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions" \ sh -c "$(curl -fsSL https://raw.githubusercontent.com/danielmiessler/Fabric/refs/heads/main/completions/setup-completions.sh)"路径二:从克隆的仓库运行安装脚本
如果你本地已经有 Fabric 仓库,直接运行仓库内的脚本即可,它优先使用同目录下的补全文件:
# 正式安装 ./completions/setup-completions.sh # 或先看它将做什么 ./completions/setup-completions.sh --dry-run输出末尾出现Shell completion setup completed!和You can now use tab completion with the '<fabric 或 fabric-ai>' command.说明安装完成。
手动安装:Zsh、Bash、Fish 分别怎么做
自动脚本失败或你想精确控制安装位置时,按 docs/Shell-Completions.md 的手动步骤操作。以下命令中的completions/...路径都相对于 Fabric 仓库根目录。
Zsh
把补全文件复制到
$fpath中的目录。系统级安装需要sudo,会写入/usr/local/share/zsh/site-functions/:sudo cp completions/_fabric /usr/local/share/zsh/site-functions/关键步骤:如果二进制装成了
fabric-ai,必须建一个符号链接,否则fabric-ai按 Tab 无反应:sudo ln -s /usr/local/share/zsh/site-functions/_fabric /usr/local/share/zsh/site-functions/_fabric-ai重启 shell,或重载补全:
autoload -U compinit && compinit补全文件 completions/_fabric 第一行的
#compdef fabric fabric-ai声明它同时绑定两个命令名,链接建好后两个命令都能补全。
Bash
复制到标准补全目录。系统级用
sudo写入/etc/bash_completion.d/;用户级写入~/.local/share/bash-completion/completions/:# 系统级安装 sudo cp completions/fabric.bash /etc/bash_completion.d/ # 或用户级安装 mkdir -p ~/.local/share/bash-completion/completions/ cp completions/fabric.bash ~/.local/share/bash-completion/completions/fabricfabric-ai的符号链接,与安装级别对应:# 系统级 sudo ln -s /etc/bash_completion.d/fabric.bash /etc/bash_completion.d/fabric-ai.bash # 或用户级 ln -s ~/.local/share/bash-completion/completions/fabric ~/.local/share/bash-completion/completions/fabric-ai重启 shell 或重新加载:
source ~/.bashrc
Fish
Fish 只写用户目录,不需要sudo,也不需要重启:
mkdir -p ~/.config/fish/completions cp completions/fabric.fish ~/.config/fish/completions/fabric-ai的符号链接:
ln -s ~/.config/fish/completions/fabric.fish ~/.config/fish/completions/fabric-ai.fish文档说明 Fish 会自动加载补全文件,无需重启。
可选替代路径:直接在 shell 配置文件里 source
不想复制文件时,可以在 shell 配置文件里直接 source 补全文件(路径需要替换成你实际的仓库位置):
- Zsh:在
~/.zshrc中添加source /path/to/fabric/completions/_fabric - Bash:在
~/.bashrc中添加source /path/to/fabric/completions/fabric.bash - Fish:文档建议优先使用上面的文件安装方式
另有一条用户级 Zsh 变体来自 README:不写系统目录,而是复制到~/.zsh/completions并在~/.zshrc的compinit之前把它加进$fpath:
mkdir -p ~/.zsh/completions cp completions/_fabric ~/.zsh/completions/ echo 'fpath=(~/.zsh/completions $fpath)' >> ~/.zshrc echo 'autoload -Uz compinit && compinit' >> ~/.zshrc验证与排查
判断是否生效,按文档给出的方式处理:
- 安装后重启 shell(Zsh/Bash 可用
autoload -U compinit && compinit或source ~/.bashrc代替重启;Fish 不需要重启)。 - 输入
fabric -p或fabric -m后按 Tab,应能列出模式(patterns)和模型(models)候选项。补全列表是动态生成的:completions/_fabric、completions/fabric.bash 都会实时调用fabric --listpatterns --shell-complete-list、--listmodels --shell-complete-list等命令获取当前资源,所以候选项始终跟随你的 Fabric 安装状态。 - 按 Tab 无反应时,对照文档的排查清单:确认补全文件权限正常;Zsh 下确认补全目录确实在
$fpath里;如果重命名过 fabric 二进制,确认已按上文创建对应符号链接;最后重启一次 shell 确保补全被加载。
安装完成后,Tab 可补全的范围包括:-p/--pattern/--readpattern的 patterns、-m/--model的模型、-V/--vendor的厂商、contexts、sessions、strategies、extensions、--voice的 Gemini TTS 音色、--transcribe-model的转录模型,以及--thinking、--debug、--image-size、--image-quality、--image-background的固定取值、附件/输出等文件路径,还有所有命令行 flag。
【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考