简介
Carapace 为大量 CLI 提供参数、子命令和动态值补全,并把同一套补全定义输出给多种 Shell。它适合同时使用 Zsh、Fish、Nushell 或 PowerShell,希望补全体验保持一致的用户。
与只补全命令名的轻量方案不同,Carapace 能理解命令结构,并对文件、Git 引用、容器、进程等动态参数提供上下文候选。
安装与启用
brew install carapace
# Zsh
echo 'source <(carapace _carapace zsh)' >> ~/.zshrc
# Bash
echo 'source <(carapace _carapace bash)' >> ~/.bashrc
# Fish
mkdir -p ~/.config/fish/completions
carapace _carapace fish > ~/.config/fish/completions/carapace.fish
Nushell 用户可把桥接配置写入 config.nu:
let carapace_completer = {|spans|
carapace $spans.0 nushell ...$spans | from json
}
核心特性
- 跨 Shell 复用 — 一套 completer 可服务 POSIX 与非 POSIX Shell
- 大量预制补全 — 覆盖常用开发、系统、云和容器命令
- 动态候选 — 根据当前目录、Git 状态或外部命令生成候选
- 样式支持 — 可为不同类型的补全项设置颜色和描述
- 可扩展规格 — 能为内部或小众 CLI 编写自定义补全定义
适合谁
经常切换 Shell、使用参数复杂的 CLI,或希望给团队内部工具补齐高质量补全时,Carapace 很有价值。只使用 Fish 且现有原生补全已足够的用户,收益会相对有限。