簡體   English   中英

我怎樣才能得到 clap 來包裝長的幫助信息?

[英]How can I get clap to wrap long help messages?

這是一個例子:

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();
}

今天(Clap v4.0.26)您可以啟用wrap_help功能。 這在內部依賴於terminal_size

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM