C# でコンソール アプリケーションを作成することを検討しており、履歴、補完、および GNU readline のようなコマンド ライン編集機能を組み込みたいと考えています (ただし、それほど広範囲である必要はありません!)。
このタイプの機能を提供する .net 用の既存のライブラリはありますか? 1 つのオプションは、相互運用サービスを使用して GNU readline を呼び出すことだと思います。しかし、ネイティブオプションはありますか?
Miguel de Icaza のgetline.csをチェックアウトすることをお勧めします(ブログ投稿のリンクは壊れています。コードはここにあります)。実際に必要な readline の機能によっては、それで十分な場合があります。
良い点は、すべてが 1 つの (したがって 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".
}
RedLine のほとんどの機能をエミュレートすることを目的としたプロジェクトはDeveel ReadLineですが、維持されていないと言わざるを得ません。前回使用したときは、.NET と Mono の両方で非常にうまく機能しましたが、自動的に折りたたまれた行をキャンセルするときに小さなバグがありました。
私が知っているのはMono-Readlineだけです。
これは、GNU Readline ライブラリへの .NET インターフェイスを提供します。ただし、バージョンは 0.0.1 のみであり、Mono ランタイムで実行されるのを見たことがありません。
ライセンスにも注意する必要があります...私の知る限り、GNU ReadlineライブラリにリンクするものはすべてGPLの下でリリースする必要があります。