28 个版本

新增 0.4.0 2024年8月12日
0.3.19 2024年7月25日
0.3.8 2024年3月12日
0.3.2 2023年12月15日
0.2.3 2023年7月25日

#190 in 命令行界面

Download history 157/week @ 2024-04-27 180/week @ 2024-05-04 395/week @ 2024-05-11 179/week @ 2024-05-18 170/week @ 2024-05-25 46/week @ 2024-06-01 85/week @ 2024-06-08 251/week @ 2024-06-15 249/week @ 2024-06-22 325/week @ 2024-06-29 256/week @ 2024-07-06 363/week @ 2024-07-13 613/week @ 2024-07-20 229/week @ 2024-07-27 405/week @ 2024-08-03 312/week @ 2024-08-10

1,620 下载/每月
3 crates 中使用

MIT/Apache

37KB
774 代码行,不含注释

logo

tui-prompts

Crates.io License Docs.rs Dependency Status Codecov Discord

tui-prompts 是一个为 Ratatui crate 提供提示小部件的 Rust crate。它允许通过各种类型的提示轻松创建交互式命令行界面。灵感来源于 https://npmjs.net.cn/package/prompts 以及其他各种提示库。

示例

文本提示

代码
struct App<'a> {
    username_state: TextState<'a>,
    password_state: TextState<'a>,
    invisible_state: TextState<'a>,
}

impl<'a> App<'a> {
    fn draw_ui<B: Backend>(&mut self, frame: &mut Frame<B>) {
        let (username_area, password_area, invisible_area) = split_layout(frame.size())

        TextPrompt::from("Username")
            .draw(frame, username_area, &mut self.username_state);

        TextPrompt::from("Password")
            .with_render_style(TextRenderStyle::Password)
            .draw(frame, password_area, &mut self.password_state);

        TextPrompt::from("Invisible")
            .with_render_style(TextRenderStyle::Invisible)
            .draw(frame, invisible_area, &mut self.invisible_state);
    }
}

Text Prompt

更多详情请见 文本示例

软换行

文本自动换行以适应渲染区域。

Multi-line

更多详情请见 多行示例

特性

  • 文本提示
  • 密码提示
  • 隐藏提示
  • Readline/emacs 风格的键绑定
  • Crossterm 后端
  • 软换行单行
  • 多行输入
  • 滚动
  • 更多提示类型
    • 数字
    • 确认
    • 列表
    • 切换
    • 选择
    • 多选
    • 自动完成
    • 自动完成多选
    • 日期
  • 括号内粘贴
  • 验证
  • 默认初始值
  • 自定义样式
  • 主题
  • 自定义格式化
  • 后端无关的键盘事件处理 (TermionTermwiz)
  • 可定制的键绑定
  • 处理更高级的多键绑定,例如 ^[b^[f 用于行首/行尾
  • 提示链

安装

cargo add ratatui tui-prompts crossterm

或者将以下内容添加到您的 Cargo.toml 文件中

键绑定

动作
Home, Ctrl+A 将光标移至行首
End, Ctrl+E 将光标移至行尾
Left, Ctrl+B 将光标向左移动一个字符
Right, Ctrl+F 将光标向右移动一个字符
Backspace (Delete on Mac), Ctrl+H 删除光标前的字符
Delete (Fn+Delete on Mac), Ctrl+D 删除光标处的字符
Ctrl+K 从光标处删除到行尾的所有字符
Ctrl+U 删除整行
Enter 完成提示
Escape, Ctrl+C 中止提示

许可协议

版权(c)Josh McKinney

本项目采用以下任一许可协议:

由您选择。

贡献

除非您明确声明,否则任何按照Apache-2.0许可定义,有意提交以包含在作品中的贡献,均应双许可如上所述,不附加任何额外条款或条件。

CONTRIBUTING.md.

依赖项

~10–20MB
~284K SLoC