1 个不稳定版本
0.0.1 | 2024年2月1日 |
---|
#14 in #readline
1MB
27K SLoC
scansion
关于
这是一个 readline 风格的 crate,包括对 Vim 和 Emacs 键绑定的支持。
用法
此 crate 在 crates.io 上,可以通过在项目的 Cargo.toml
中的依赖项中添加 scansion
来使用。
[dependencies]
scansion = "0.0.1"
许可证
scansion
在 Apache 许可证,版本 2.0 下发布。
lib.rs
:
Readline 风格编辑器
概述
此模块提供了一个 readline 风格的编辑器,用于获取用户输入。它旨在与任何 [BindingMachine] 实现者协同工作,该实现者将输入映射到 [Action]。
示例
use modalkit::{
env::vim::keybindings::{VimBindings, VimMachine},
keybindings::InputBindings,
key::TerminalKey,
};
use scansion::{ReadLine, ReadLineInfo};
fn main() -> Result<(), std::io::Error> {
let mut vi = VimMachine::<TerminalKey, ReadLineInfo>::empty();
VimBindings::default().submit_on_enter().setup(&mut vi);
let mut rl = ReadLine::new(vi)?;
loop {
match rl.readline(Some("> ".to_string())) {
Ok(s) => match s.trim() {
"q" | "quit" => {
return Ok(());
},
_ => {
println!("User typed: {:?}", s);
}
},
Err(e) => {
// Print out editor error messages.
println!("{}", e);
},
}
}
}
依赖项
~6–21MB
~254K SLoC