是否存在类似于GNU readline的.Net库?

时间:2010-01-07 22:30:13

标签: c# .net readline

我正在考虑在C#中编写一个控制台应用程序,我希望将历史,完成和命令行编辑功能纳入GNU readline(但不一定非常广泛!)

是否有.net的现有库提供此类功能?我想一个选择是使用互操作服务来调用GNU readline。但是有原生选择吗?

4 个答案:

答案 0 :(得分:9)

您可能想要查看Miguel de Icaza的getline.cs(博文中的链接已损坏,现在可以找到代码here)。根据您实际需要的readline的功能,它可能足以满足您的需要。

好消息是,它全部包含在一个(因此是getline.cs)文件中并且MIT X11被许可。

使用它很容易。

如果你想尝试一下,只需下载文件并编译即可:

C:\> csc.exe /d:DEMO getline.cs 
C:\> getline.exe
shell>

#ifdef DEMO部分还显示基本的REPL:

var le = new LineEditor("whatever");
string s;

while ((s = le.Edit("my prompt> ", "")) != null)
{
    // User input from command line / prompt now in "s".
}

答案 1 :(得分:2)

我唯一知道的是Mono-Readline

它为GNU Readline库提供了一个.NET接口 - 它有点原始,只有0.0.1版本,而且我只看到它在Mono运行时运行。

你也应该小心许可...... AFAIK任何链接GNU Readline库的东西都需要在GPL下发布。

答案 2 :(得分:2)

旨在模仿RedLine的大部分功能的项目是Deveel ReadLine,但我不得不说它没有被维护。上次我使用它时,它在.NET和Mono上运行得非常好,虽然在取消自动折叠的一行时有一个小错误。

答案 3 :(得分:0)

旧问题,但仍然存在,因为它出现在Google搜索结果中。提及以下内容很有意义:

https://github.com/tonerdo/readline是当今的不错选择。引用其自述文件:

ReadLine是类似GNU Readline的库,它是用纯C#构建的。它可以替代内置的Console.ReadLine(),并附带一些从unix shell获得的终端优势,例如命令历史记录导航和选项卡自动完成。

它是跨平台的,可在支持.NET的任何地方运行,针对netstandard1.3意味着它可以与.NET Core以及完整的.NET Framework一起使用。

许可证

该项目已获得MIT许可