3 个不稳定版本

0.2.0 2021年4月13日
0.1.1 2021年4月8日
0.1.0 2021年4月8日

243文本编辑器

MIT 许可证

41KB
1K SLoC

Mini-Me

基于 crossterm 的可嵌入、可自定义的行内文本编辑器。

      ╭─── Input Prompt
    1 │ hello there
    2 │ this is a simple prompt
    3 │ thats multiline and decent enough
    4_
      ╰─── Lines: 4     Chars: 70    Ln: 3, Col: 0

特性

  • 简单、直观、可嵌入。
  • 可自定义页眉、页脚和或边距。
    • 预设样式不稳定。
  • 范围选择。
  • (不稳定) 支持剪贴板。

二进制安装

minime 可以用作 CLI。安装它的最佳方式是使用

cargo install --features=bin --path .

可以通过调用 minime -h 来使用二进制。

默认控制

  • 箭头键按预期工作。
  • Home、End、Delete、Tab 和 backtab 与 VSCode 的行为相同。
  • Shift-arrow 键创建选择范围。
  • 在最后一行空行上按 EscEnter 以关闭和提交提示。
  • Control-X/C/V 剪贴板支持不稳定。

使用方法

基本设置

这是最基本的可用的设置。

use minime::{editor::keybindings::NormalKeybinding, editor::Editor, Result};

fn main() -> Result<()> {
    println!("Write something cool!");

    let term = Editor::default();

    dbg!(term.read(NormalKeybinding))?;
    Ok(())
}

高级

您可以将 stdout()stderr() 锁定以获得更好的性能。您还可以在渲染器中自定义几个设置。

use minime::{
    editor::{keybindings::NormalKeybinding, Editor},
    renderer::{
        full::CrosstermRenderer,
        styles::classic::{ClassicFooter, ClassicGutter, ClassicHeader},
    },
    Result,
};

fn main() -> Result<()> {
    // Redirect our output to stdout (default).
    let stdout = std::io::stdout();
    let mut lock = stdout.lock();

    let renderer = CrosstermRenderer::render_to(&mut lock)
        .max_height(Some(10))
        .margin(ClassicGutter)
        .header(ClassicHeader(
            "Enter on the last line or Esc to submit your input!",
        ))
        .footer(ClassicFooter);

    // Print out some prompt using styling options.
    let term = Editor::with_renderer(renderer);
    dbg!(term.read(NormalKeybinding)?);
    Ok(())
}

依赖项

~2.4–4.5MB
~84K SLoC