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 在 命令行界面
120KB
2K SLoC
rucline

上述演示的代码在 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://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://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