我考虑写在C#控制台应用程序,我想结合的历史,完成和命令行编辑功能类似于GNU的readline(但不一定是广阔的,这一点!)是否有一个类似于GNU readline的.Net库?
有一个现有的库。它提供了这种类型的功能?我想一个选择是使用互操作服务来调用GNU readline。但是有一个本地选项?
我考虑写在C#控制台应用程序,我想结合的历史,完成和命令行编辑功能类似于GNU的readline(但不一定是广阔的,这一点!)是否有一个类似于GNU readline的.Net库?
有一个现有的库。它提供了这种类型的功能?我想一个选择是使用互操作服务来调用GNU readline。但是有一个本地选项?
您可能想结算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".
}
我已经尝试了CSharpRepl项目中的getline库,但对tab完成的支持有限。此外,完成功能本身很难实现。 也许只是我的限制... – Antonello 2010-05-03 21:23:46
但链接不被破坏o.o – 2015-03-03 14:36:25
我唯一知道的是Mono-Readline。
它提供了一个.NET接口GNU readline库 - 这是一个有点原始但是,只有0.0.1版本,我只看到过的单声道运行时上运行。
你应该小心牌太......据我所知任何链接GNU的Readline库需要在GPL下发布。
一个项目,旨在效仿大多数的红线的功能是Deveel ReadLine,但我不得不说,这是不能维持。上次我使用它的时候,它在.NET和Mono上工作得非常好,虽然在取消自动折叠的行时有一个小错误。
你有没有考虑一个PowerShell管理单元?这是我能想到的.NET世界中最“原生”的选择。 – 2010-01-07 22:32:51
也许它只是我,但是当你开始考虑用这种方式来增强UI的用户体验时,你应该开始关注Windows Forms。 – 2010-01-07 22:50:19
不确定关注?您是否建议我将我的应用程序编写为PowerShell管理单元?这不只是给我PowerShell的标准命令行编辑(即,基本的Windows控制台功能加上花哨的选项卡完成)?我追求的不止于此(历史搜索,单词删除,类似的事情)。 – 2010-01-07 22:52:31