rust - 我怎样才能鼓掌来包装长的帮助信息?
问题描述
这是一个例子:
extern crate clap;
use clap::{Arg, App};
fn main() {
let args = App::new("test")
.arg(Arg::with_name("scoring_method")
.short("s")
.long("scoring-method")
.help("Very very very very very very long long long long long help help help help help message message message message message message message"))
.get_matches();
}
导致帮助文本格式如下:
(在代码模式下粘贴会导致 Stack Overflow 修复格式问题)
产生的确切字符串是:
'USAGE:\n play [FLAGS]\n\nFLAGS:\n -h, --help Prints help information\n -s, --scoring-method Very very very very very very long long long long long help help help help help message\n message message message message message message\n -V, --version Prints version information'
解决方案
Clap 有一个max_term_width用于包装它输出的文本。如该文档中所述,它默认为120
字符,这就是为什么您最终会看到文本拆分,但不是您希望的地方。
如果您想设置某个宽度,可以使用带有特定值的set_term_width 。或者,您可以使用像terminal_size这样的板条箱来获取当前终端的大小,并使用它来设置clap
要使用的宽度。
作为一个完整的例子:
extern crate clap;
extern crate terminal_size;
use clap::{App, Arg};
use terminal_size::{terminal_size, Width};
fn main() {
let args = App::new("test")
.set_term_width(if let Some((Width(w), _)) = terminal_size() { w as usize } else { 120 })
.arg(Arg::with_name("scoring_method")
.short("s")
.long("scoring-method")
.help("Very very very very very very long long long long long help help help help help message message message message message message message"))
.get_matches();
}
推荐阅读
- javascript - 使用 Vue 监听应用外的 DOM 事件
- javascript - 为什么 Vue 路由器正则表达式会在所有路径上触发?
- android - 我们可以使用低功耗蓝牙解锁安卓设备吗?
- jquery - 如何删除使用多个日期选择器时保存的选定日期
- python - 如何在不使用 [0] 的情况下打印出 json 对象?
- react-native - 反应本机:Virtualbox linux内核驱动程序不存在或权限问题
- amazon-web-services - IAM 创建策略只允许一个区域但所有全球服务都需要
- firebase - Firebase Cloud Functions Firestore - 无法读取 null 的属性“文本”
- mysql - 如何使用sql合并两列?
- json - Glue 抓取的混合模式事件的建议 JSON 结构