2010-01-07 4 views
6

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

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

+0

Рассматривали ли вы PowerShell оснастку ? Это самый «родной» вариант в мире .NET, о котором я могу думать прямо сейчас. –

+0

Возможно, это только я, но когда вы начинаете думать об улучшении пользовательского интерфейса с помощью пользовательского интерфейса таким образом, вам действительно нужно начать смотреть на Windows Forms. –

+0

Не уверен, что я следую? Представляете ли вы, что я пишу свое приложение как оснастку powershell? Не будет ли это просто дать мне стандартное редактирование командной строки PowerShell (т. Е. Основные функции консоли Windows плюс причудливое заполнение вкладки)? Я больше после этого (поиск в истории, удаление слов и тому подобное). –

ответ

9

Возможно, вы захотите проверить Miguel de Icaza's 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

Я пробовал библиотеку getline из проекта CSharpRepl, но имеет ограниченную поддержку для завершения табуляции. Кроме того, сама функция завершения довольно сложно реализовать. Возможно, только мои ограничения ... – Antonello

+0

Но ссылка не сломана o.o –

2

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

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

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

2

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

Смежные вопросы