#cli #终端 #repl #终端着色 #颜色

rucline

一个跨平台、支持 UTF-8、具备自动补全和制表符建议功能的颜色渲染行读取器,您可以用它“放松”

6 个版本 (3 个重大更新)

0.4.0 2020年10月21日
0.3.1 2020年10月6日
0.2.2 2020年5月17日
0.1.0 2020年4月12日

#416命令行界面

MIT 许可证

120KB
2K SLoC

rucline

Github MIT licensed Cargo Documentation

demo

上述演示的代码在 examples/multiple.rs 中可用

鲁克林,Rust 的 CLI 行读取器,或简单称为 "recline",是一个跨平台、支持 UTF-8 的行读取器,提供了自动补全和制表符建议的钩子。它支持高级编辑 actions 和自定义行读取器行为的钩子,使其比简单地从 stdin 读取更灵活。

基本用法

use rucline::Outcome::Accepted;
use rucline::prompt::{Builder, Prompt};

if let Ok(Accepted(string)) = Prompt::from("What's you favorite website? ")
    // Add some tab completions (Optional)
    .suggester(vec![
        "https://www.rust-lang.net.cn/",
        "https://docs.rs/",
        "https://crates.io/",
    ])
    //Block until value is ready
    .read_line()
{
    println!("'{}' seems to be your favorite website", string);
}

动作

可以使用 actions 自定义和组合鲁克林的行为。

有一组内置的默认 actions,在用户交互时将执行。这些内置功能旨在让用户感觉自然,同时增加额外的功能和编辑命令。例如,一些内置功能包括:

  • Tab:在补全项之间循环
  • Shift + Tab:反向在补全项之间循环
  • CTRL + W:删除当前单词
  • CTRL + J:删除到单词的开头
  • CTRL + K:删除到单词的末尾
  • CTRL + U:删除整行
  • CTRL + H:删除到行的开头
  • CTRL + L:删除到行的末尾

请参阅 Action 了解完整的默认行为规范

可以通过用 actions 覆盖用户 events 来自定义默认行为。这些 actions 可以在运行时序列化、存储和加载。

覆盖按键绑定

use rucline::Outcome::Accepted;
use rucline::actions::{Action, Event, KeyBindings, KeyCode, Range};
use rucline::prompt::{Builder, Prompt};

let mut bindings = KeyBindings::new();

// Accept the full suggestions if `right` is pressed
bindings.insert(Event::from(KeyCode::Right), Action::Complete(Range::Line));

if let Ok(Accepted(string)) = Prompt::from("What's you favorite website? ")
    // Add some likely values as completions
    .completer(vec![
        "https://www.rust-lang.net.cn/",
        "https://docs.rs/",
        "https://crates.io/",
    ])
    // Set the new key bindings as an override
    .overrider(bindings)
    //Block until value is ready
    .read_line()
{
    println!("'{}' seems to be your favorite website", string);
}

依赖项

~2–2.7MB
~47K SLoC