15

我正在寻找一个 GNU readline 替代品。它有很多功能,但只有几个对我有用,如下所述 -

我正在开发一个交互式命令提示应用程序(显示提示并接受下一个要运行的用户命令)。我想为提示实现一些编辑和历史功能。因此,当用户按下 UP 键时,它应该显示最后一次运行命令。此外,如果用户需要编辑任何错字或命令开关等,他应该能够使用箭头键进行导航。

在 Windows 上已经存在类似的东西,如果您使用fgetsscanf在 cmd 提示符下获取输入,它已经维护了历史记录并允许您进行编辑。

linux上有没有好的选择?

4

2 回答 2

17

我认为这是一个令人钦佩的目标:-)

也许Linenoiselibedit/editlinetecla符合要求?

其中可能 libedit 是最广泛使用的——例如 postgreqsql 客户端 shell 和用于 Kerberos 的各种 BSD 实用程序ntp(尽管由于在 Linux 上广泛使用 libreadline,它可能不是用于编译的默认行编辑库)。如果您阅读了其中的一些参考资料并做一些进一步的研究,您会看到有几个略有不同的 libedit/editline 版本。

干杯,祝你的项目好运。

于 2013-08-01T03:04:08.063 回答
5

replxx,一个 BSD 许可的 readline 替代品。它适用于 Linux、BSD、Solaris 和 Windows。它支持您期望从交互式控制台程序中获得的功能,即:

  • 行编辑
  • 历史
  • 语法高亮
  • 提示
  • UTF-8
  • 用户定义的键绑定(支持 (shift/ctrl)F1 - F12)
  • 多线程打印
于 2019-07-30T07:56:54.940 回答