2010-01-07 97 views
6

我考虑写在C#控制台应用程序,我想结合的历史,完成和命令行编辑功能类似于GNU的readline(但不一定是广阔的,这一点!)是否有一个类似于GNU readline的.Net库?

有一个现有的库。它提供了这种类型的功能?我想一个选择是使用互操作服务来调用GNU readline。但是有一个本地选项?

+0

你有没有考虑一个PowerShell管理单元?这是我能想到的.NET世界中最“原生”的选择。 – 2010-01-07 22:32:51

+0

也许它只是我,但是当你开始考虑用这种方式来增强UI的用户体验时,你应该开始关注Windows Forms。 – 2010-01-07 22:50:19

+0

不确定关注?您是否建议我将我的应用程序编写为PowerShell管理单元?这不只是给我PowerShell的标准命令行编辑(即,基本的Windows控制台功能加上花哨的选项卡完成)?我追求的不止于此(历史搜索,单词删除,类似的事情)。 – 2010-01-07 22:52:31

回答

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". 
} 
+0

我已经尝试了CSharpRepl项目中的getline库,但对tab完成的支持有限。此外,完成功能本身很难实现。 也许只是我的限制... – Antonello 2010-05-03 21:23:46

+0

但链接不被破坏o.o – 2015-03-03 14:36:25

2

我唯一知道的是Mono-Readline

它提供了一个.NET接口GNU readline库 - 这是一个有点原始但是,只有0.0.1版本,我只看到过的单声道运行时上运行。

你应该小心牌太......据我所知任何链接GNU的Readline库需要在GPL下发布。

2

一个项目,旨在效仿大多数的红线的功能是Deveel ReadLine,但我不得不说,这是不能维持。上次我使用它的时候,它在.NET和Mono上工作得非常好,虽然在取消自动折叠的行时有一个小错误。

相关问题