我考慮寫在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