Существует ли библиотека .NET, подобная GNU readline?

Я рассматриваю запись консольного приложения в C#, и я хочу включить историю, завершение и особенности редактирования командной строки что-то как GNU readline (но не обязательно настолько обширный!)

Существует ли существующая библиотека для .NET, который обеспечивает этот тип функциональности? Я предполагаю, что одна опция состояла бы в том, чтобы использовать interop сервисы для вызова GNU readline. Но существует ли собственная опция?

6
задан John Saunders 1 May 2010 в 20:16
поделиться

3 ответа

Вы можете проверить getline.cs Мигеля де Икаса (ссылка в сообщении в блоге не работает, теперь код можно найти здесь ). В зависимости от того, какие функции 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".
}
9
ответ дан 8 December 2019 в 18:37
поделиться

Единственное, о чем я знаю, это Mono-Readline .

Она предоставляет .NET-интерфейс для библиотеки GNU Readline - она немного сырая, только версия 0.0.1, и я когда-либо видел, чтобы она работала только во время Mono.

Вы должны быть осторожны и с лицензированием... AFAIK все, что связывает библиотеки GNU Readline, должно выпускаться под GPL.

2
ответ дан 8 December 2019 в 18:37
поделиться

проект, целью которого является эмуляция большинства функций RedLine, - это Deveel ReadLine , но должен сказать, что он не поддерживается. В прошлый раз, когда я использовал его, он очень хорошо работал как в .NET, так и в Mono, хотя есть небольшая ошибка при отмене строки, которая была автоматически свернута.

2
ответ дан 8 December 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: