这是一个例子:
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();
}
Run Code Online (Sandbox Code Playgroud)
导致帮助文本格式如下:
(在代码模式下粘贴会导致 Stack Overflow 修复格式问题)
生成的确切字符串是:
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();
}
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)