You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在clap CLI中为子命令添加精细格式化的长文档?

如何为clap子命令添加精细格式化的long_about文档?

你遇到的这个格式错乱问题挺常见的——用#[derive(Subcommand)]定义子命令时,直接写在变体上的多行doc注释经常会丢失缩进或者排版格式。不过别担心,clap早就支持给子命令单独设置像全局CLI那样的long_about内容,完全不用放弃derive宏的便利性。

解决方案:给子命令变体添加#[clap(long_about)]属性

你可以直接在Commands枚举的具体变体上使用#[clap(long_about = "...")]属性,把需要精细控制格式的文档内容放在引号里,这样执行mycli init --help时,输出会完全保留你设置的换行、缩进和排版。

修改后的代码示例:

use clap::Subcommand;

#[derive(Debug, Subcommand)]
enum Commands {
    /// 简短描述:创建新配置文件
    #[clap(long_about = "创建一个新的配置文件

这是第一行说明
   这是缩进后的第二行说明
可以自由控制每一行的格式和排版")]
    Init,
}

为什么这个方法有效?

当你使用#[derive(Subcommand)]时,clap会优先读取变体上的clap属性参数,而不是默认解析doc注释。这样你就能精准控制long_about的所有格式细节,彻底解决之前的格式错乱问题。

如果还是想用doc注释的方式,也可以尝试调整注释的公共缩进——clap会自动去掉doc注释中所有行的公共缩进,但手动调整起来往往不如直接用long_about属性直观可控。

内容的提问来源于stack exchange,提问作者Peteris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 18:20:59