#command-line #thread-safe #read-line #line-editing

liso

同时输入输出行:输入行可编辑,输出行永远不会混乱,并且所有操作都是线程安全的

10 个版本 (稳定版)

1.2.1 2024年5月4日
1.2.0 2024年5月3日
1.1.1 2023年5月18日
1.0.2 2023年3月9日
0.7.0 2022年11月2日

#119命令行界面

Download history 333/week @ 2024-05-03 2/week @ 2024-05-10 13/week @ 2024-05-17 5/week @ 2024-05-24 2/week @ 2024-06-07 1/week @ 2024-06-21

每月770次下载
4 crates 使用

MIT/Apache 许可协议

200KB
4K SLoC

Liso (LEE-soh) 是“同时输入输出行”的缩写。它是一个用于编写面向行的程序的库:这类程序以行形式接收输入,并以行形式生成输出。

主要功能

  • 类似 Readline 的行编辑
  • 可自定义提示符
  • 输出与输入分开显示
  • 支持来自无限多线程/任务的并发输出
  • 状态行,显示在输入上方和输出下方
  • 管道智能(在管道中使用时,自动禁用交互功能)
  • 可选异步支持(使用 tokio
  • 可选历史记录支持(如果未禁用功能标志 history
  • 可选自动换行(通过 wrapln 函数实现,如果未禁用功能标志 wrap
  • 可选制表符补全支持(如果未禁用功能标志 completion

支持的平台

  • Windows 7 或更高版本(完全未经测试)
  • 任何具有 ANSI 兼容终端的操作系统(如果您不知道您的终端是否兼容 ANSI,那么它就是)
  • 任何具有 VT52 兼容终端的操作系统

有关更多信息,请参阅 crates 文档,或查看 示例 以获取完整的示例程序。

行编辑绑定

Liso 提供基于常用 GNU Readline 绑定子集的行编辑功能

  • 转义:发送 Escape
  • 回车(控制-M)或 Enter(控制-J):发送当前输入行。
  • Control-A 或 Home:移动到行首。
  • Control-B/F 或 左/右箭头:移动光标。(back 或 forwards)
  • Control-C:发送 Quit
  • Control-D:如果有输入,则丢弃输入;否则,发送 Finish
  • Control-E 或 End:移动到行尾。
  • Control-G:如果存在任何输入,将丢弃,并给出中断输入的反馈。
  • Control-K:剪切(kill)光标之后的所有内容。
  • Control-L:清除显示屏。
  • Control-N/P 或 上/下箭头:在历史记录中移动。(previous 或 next)
  • Control-T:发送 Info
  • Control-U:剪切(kill)光标之前的所有内容。
  • Control-W:从光标向左删除直到遇到一个 White_Space 字符。("Delete word")
  • Control-X:发送 Swap
  • Control-Y:粘贴(yank)最后剪切过的文本。
  • Control-Z:(仅限UNIX)优雅地挂起我们自身,等待父shell恢复。
  • Control-\ 或 Break:发送 Break

这些绑定可能会更改。未来可能会添加更多绑定,默认绑定可能会更改,并且可能有一天可以实现用户指定的绑定。

VT52支持?

1985年发布的Atari ST个人电脑在其内置ROM中包含了一个VT52模拟器。虽然市场对作为廉价远程终端的能力表示热烈欢迎,但VT52作为模拟的终端选择很奇怪,因为即使在1985年,它已经被认为是非常过时的。尽管如此,这个模拟器作为Liso对奇怪、非ANSI、非Crossterm终端支持的平台。

如果存在TERM环境变量,并且基本类型(如果有,位于-左侧)是st52tw52tt52atatariataristatari_stvt52stv52stv52pc,则Liso的VT52支持将被激活。它将根据您选择的特定终端类型及其大小来尝试确定颜色数量和特殊功能支持。您应使用以下值之一

  • TERM=st52-m,80 x 50:具有单色监视器的Atari ST(高分辨率)。
  • TERM=st52,80 x 25:具有彩色监视器的Atari ST(中等分辨率,4种颜色)。
  • TERM=st52,40 x 25:具有彩色监视器的Atari ST(低分辨率,16种颜色)。
  • TERM=atari,任何大小:具有彩色监视器的Atari(假设16种颜色)。
  • TERM=vt52,任何大小:真实VT52(未经测试)。

输入和输出工作。除了控制键之外的特殊字符不起作用,我需要做更多测试以了解原因。将Liso与Atari的VT52模拟器进行比较测试对优化重绘例程和解决样式处理的一些边缘情况非常有帮助。

需要帮助

我实际上没有Windows机器,所以无法测试这个crate是否在Windows上工作。它应该工作,因为它使用了Crossterm,但我会欢迎Windows用户和/或开发者的报告。

我不知道Liso对视觉障碍用户的效果如何。如果您使用带有屏幕阅读器或点阵终端的命令行应用程序,我将非常感激您与我联系。我愿意了解如何改进您使用基于Liso的程序的经验。

未来

本地化的错误消息将非常好。我也希望在将来添加从右到左/双向支持。

法律术语

Liso 版权所有 2022 和 2023,Solra Bizna,许可方式为以下之一

任选其一。

除非您明确表示,否则您提交的任何有意包含在 Liso 库中的贡献,如 Apache-2.0 许可证所定义,应按上述方式双许可,不附加任何额外条款或条件。

依赖关系

~3–12MB
~106K SLoC