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://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