Readline是否有简单的替代品?

13

在我正在处理的一个项目中,我试图使其接受用户命令并通过向上箭头提供历史记录。我旨在使这个项目不依赖其他库,并且我不想要求人们安装readline开发文件来编译我的项目。有没有人知道一个简单的替代GNU Readline的解决方案,它只提供简单的功能?

6个回答

26

Editline是一个具有BSD风格许可证的文本编辑器。

注:旧版本的editline非常简单。这里有一个只有两个C文件和一个头文件,总共约1500行代码的版本。我们已经使用它多年了。


17

我找到了一个,Redis的知名作者antirez创建了linenoise,这是一个更简单的替代品。


2
我相信非英语用户会很喜欢你的程序在他们尝试输入自己语言的文本时出现错误。 - R.. GitHub STOP HELPING ICE

7
大多数系统都已经安装了readline,所以我不认为这是一个太大的问题。
其次,我认为没有任何可以替代GNU Readline库的工具。你将不得不坚持使用它。 :(
编辑于2016年5月11日:此答案已过时,任何我所做的编辑几乎都是从其他更正确的答案中借鉴而来。总结:现代的readline替代品有linenoiseeditline

是的,看起来我无法回避它。我已经检查了一些替代选项,如Editline和libtecla,但它们并不满足“简单”的要求。我只能硬着头皮去做了。 - Justin Poliey
我宁愿不说。clisp是第一个因为readline而转换为GPL的。这里有一篇关于readline和GPL的文章。 - Yasushi Shoji
1
我会更新这个答案——无论是 Windows 还是 Mac OS X 都没有安装 readline —— 这占了非常大的用户比例! - Chris Jefferson
可能应该删除我的答案...我认为它有点过时了。编辑:事实证明,您无法删除已接受的答案。 - dwlz
@ChrisJefferson 哦。你说得对。Mac OS X实际上包括兼容代码,用于请求readline的代码,将调用映射到editline。有趣。 - uliwitness

3

BusyBox包含类似于readline的命令行编辑代码,但更小、更简单,完全支持UTF-8。将其转化为独立库可能很容易。


3

Editline库是另一个备选方案。根据README文件:

Editline库是由Simmule Turner和Rich Salz于1992年创建的。当时,他们选择在“C News-like”版权下分发代码,请参阅LICENSE文件以获取详细信息。

[...]

此版本的editline库是Minix3源代码的一个分支。其他已知版本,通常基于最初的comp.sources.unix发布,包括:

每个分支中最有趣的补丁和错误修复都已合并到此处。


1

editline(libedit)目前不支持多字节字符。

我也同意Dan Loewenherz的观点,readline库非常普及。例如,大多数Linux发行版都使用带有readline的bash。大多数Python发行版也带有readline。如果您的项目需要类似readline的库,最好使用GNU readline库,因为它是一个流行的选择,用户可能已经在操作系统上安装了它。


2
截至2010年4月24日,可以使用“./configure --enable-widec”选项构建支持utf-8的editline。 - Graham Miln
3
截至2016年06月18日,editline始终内置Unicode(宽字符/UTF-8)支持,并且--enable-widec标志已弃用。 - AndreyT
1
如果您的项目需要一个类似readline的库,使用GNU readline库是个好主意,因为它是一个流行的选择,用户可能已经在操作系统上安装了它。请注意,readline本身以及由此产生的衍生作品(即二进制文件)都是GPL许可的,这可能适用于某些项目,也可能不适用。 - Ivan Vučica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接