【问题标题】:Lightweight GNU readline alternative轻量级 GNU readline 替代品
【发布时间】:2013-08-01 16:50:36
【问题描述】:

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

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

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

在 linux 上有什么好的选择吗?

【问题讨论】:

  • 认真的吗?这是某种 Visual Studio 插件吗?
  • @Duck 谢谢,我正在使用 C。我正在使用 VS,但不确定它是否是附加组件。
  • 只使用 readline 有什么问题?它很容易集成到您的应用程序中。
  • @rici 似乎功能如此丰富,我想看看是否有更简单/轻量级的东西
  • rici 和 Duck 绝对正确。在 Linux 中,甚至终端窗口的大小也可能随时更改,因此库必须适当地重新绘制线条。此外,由于语言环境支持各种字符集和非打印和特殊序列,库必须能够计算 glyphs 而不是输入字节,以跟踪输入在屏幕上的时长,而 in-内存长度可能完全不同。我会选择 readline 库中的readline(),因为它易于使用和用户友好。 (像我这样的用户在~/.inputrc 中设置了自己的怪癖。)

标签: c linux shell user-input readline


【解决方案1】:

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

也许Linenoiselibedit/editlinetecla 符合要求?

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

干杯,祝你的项目好运。

【讨论】:

【解决方案2】:

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

  • 行编辑
  • 历史
  • 语法高亮
  • 提示
  • UTF-8
  • 用户定义的键绑定(支持 (shift/ctrl)F1 - F12)
  • 多线程打印

【讨论】:

    猜你喜欢
    • 2010-09-09
    • 1970-01-01
    • 2010-09-10
    • 2014-04-23
    • 2011-07-18
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多