2010-01-07 98 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上工作得非常好,雖然在取消自動摺疊的行時有一個小錯誤。

相關問題