资讯详情

一键支持 Bash、Zsh、Fish 等 5 种 Shell:Usage 动态补全完全指南

📅 2026/10/15 17:20:43 | 华诺云谱 👁 阅读
一键支持 Bash、Zsh、Fish 等 5 种 Shell:Usage 动态补全完全指南
【免费下载链接】usageA specification for CLIs项目地址https://gitcode.com/gh_mirrors/usage/usage点击查看免费下载Usage是一个 CLI 规范工具用一份 KDL 文件描述你的命令行命令、标志和参数即可同时生成解析器、帮助、Shell 补全、Markdown 文档和 man 页。其中最实用的能力之一就是用一条命令为Bash、Zsh、Fish、PowerShell、Nushell这 5 种 Shell 动态生成 Tab 补全脚本——补全内容始终来自最新规范而不是写死在脚本里的静态列表。为什么叫动态补全传统补全脚本通常把候选词硬编码进文件程序一升级就失效。Usage 的思路完全不同生成的脚本只是一层薄薄的垫片每按一次 Tab它就调用usage complete-word读取规范文件实时返回候选项。这意味着 规范文件改了补全立刻跟着变无需重新生成脚本 5 种 Shell 共用同一套补全逻辑行为完全一致️ 不装脚本也能手动验证usage complete-word可以直接在命令行试跑核心文档见 docs/cli/completions.md补全源码位于 lib/src/complete/5 种 Shell 分别对应bash.rs、zsh.rs、fish.rs、powershell.rs、nu.rs。一键安装5 种 Shell 的安装步骤先准备好两样东西安装好的usage可执行文件以及你的规范文件例如mycli.usage.kdl。然后只需把 Shell 名字换一下即可# Bash usage generate completion bash mycli --file ./mycli.usage.kdl --install # Zsh usage generate completion zsh mycli --file ./mycli.usage.kdl --install # Fish usage generate completion fish mycli --file ./mycli.usage.kdl --install # PowerShell usage generate completion powershell mycli --file ./mycli.usage.kdl --install # Nushell usage generate completion nu mycli --file ./mycli.usage.kdl --install--install会直接写入该 Shell 的标准补全目录并打印还需要手动添加的那一行例如 Zsh 的fpath——注意它从不偷偷修改你的.bashrc、.zshrc等启动文件安装过程可预期、可撤销。装好后打开新 Shell输入mycli --再按 Tab 试试。⚠️ 小提醒Bash 需要先安装 bash-completion 2.11 以上版本生成的脚本在补全时需要usage在PATH中。进阶用法 1从可执行文件直接读规范如果你的 CLI 自己能打印规范例如支持mycli __usage_spec__可以用--usage-cmd代替--fileusage generate completion zsh mycli --usage-cmd mycli --usage-spec --install这样每次补全都会问当前装的是哪个版本补全和已安装的二进制永远对齐规范文件永远不会过期。命令细节参考 docs/cli/reference/generate/completion.md。进阶用法 2一行让所有脚本都支持 Tab如果你的工具是一批带usageshebang 的脚本不想逐个生成补全文件completion-init可以在启动时全局接管# 在 ~/.bashrc 或 ~/.zshrc 中 source (usage g completion-init zsh)Bash / Zsh注册一个回退补全器凡是首行为usageshebang 的可执行文件自动获得 Tab 补全Fish启动时扫描一次PATH为找到的每个脚本注册补全参数说明见 docs/cli/reference/generate/completion-init.md。手写验证不装脚本先看补全结果complete-word是最快的调试方式——它把已输入的单词交给规范每行返回一个候选$ usage complete-word --file ./mycli.usage.kdl -- mycli cmd1 cmd2 --f --file --force这个命令也是所有生成脚本背后的真正执行者定义见 cli/usage.usage.kdl实现参考 cli/src/cli/complete_word.rs。自定义候选值让补全更聪明除了命令和标志你还可以为任意参数提供自定义候选。在项目示例 examples/basic.usage.kdl 中可以看到complete plugin runecho \plugin-1\nplugin-2\nplugin-3\候选来源可以是任意可执行命令run...加descriptions#true还能给每个候选带上说明文字内联写法把complete直接写在arg块里优先级更高参见 examples/inline-complete.usage.kdl如果你是用 Rust 开发的 CLIusage-rs框架还能让补全回调你自己的二进制甚至额外支持 Elvish详见 docs/rust/completions.md。常见问题 FAQQ脚本能生成到自定义位置吗能。不加--install时脚本输出到 stdout你可以重定向到任意目录再source加载。Q目标位置已有别的补全文件怎么办--install不会覆盖非 Usage 写入的文件确认要替换时才加--force。文件无变化时会原样保留。Qusage自己也能补全吗当然——它也是 CLIusage g completion zsh usage --usage-cmd command usage --usage-spec --install即可。总结需求命令为单个 CLI 安装补全usage generate completion shell bin --file ... --install补全与二进制版本对齐加--usage-cmd ...所有 usage 脚本全局生效usage g completion-init shell后 source 进 rc手动查看候选结果usage complete-word --file ... -- 已输入的单词一句话总结规范写一次5 种 Shell 的 Tab 补全零维护。配合 Markdown 文档、man 页、typed SDK 的生成能力Usage 确实做到了 Define your CLI once. Generate the tools around it.输出文章赞分享【免费下载链接】usageA specification for CLIs项目地址https://gitcode.com/gh_mirrors/usage/usage点击查看免费下载相关推荐如何用Layui和LogicFlow快速构建企业级工作流设计器如何用Layui和LogicFlow快速构建企业级工作流设计器 在当今快速发展的企业数字化转型浪潮中工作流设计器开发已成为提升业务流程效率的关键技术。然而前端工作流自动化try命令行补全终极指南Bash、Zsh、Fish自动补全一键配置try命令行补全终极指南Bash、Zsh、Fish自动补全一键配置 想要让try命令行工具的使用体验更上一层楼吗 今天我将为你详细介绍如何在Bash、ZCLI开发工具从源码解析fastBPEC核心算法与数据结构详解从源码解析fastBPEC核心算法与数据结构详解 fastBPE是一个高效的C实现的字节对编码BPE工具广泛应用于自然语言处理中的子词单元处理。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑