Любые идеи о том, как реализовать завершение табуляции для консольного приложения .NET (C#)? И я имею в виду приложение, которое запускается, а затем зацикливается на вводе пользователем (например, если вы запускаете ftp.exe без каких-либо аргументов), например:
string line = string.Empty;
while (line != "exit")
{
//do something here
Console.ReadLine();
}
Я знаю, что, вероятно, на самом деле не могу использовать строку чтения, но я хотел бы иметь возможность выполнять завершение табуляции в том же месте, где вы получаете ввод от пользователя.





Взгляните на этот код из проекта Mono http://tirania.org/blog/archive/2008/Aug-26.html Я как-то играл с ним. Он выполняет много редактирования командной строки, но я не думаю, что он выполняет завершение строки.
Сделайте Console.ReadKey ().
Если вы получили вкладку, посмотрите, что у вас есть в буфере команд, и прокрутите доступные команды. Если someCommand.Name.BeginsWith(currentinput), у вас есть победитель, и вы можете написать на экран список возможных команд.
Если есть только один (TM), вы можете заменить его тем, что набрал пользователь :)
Я создал небольшую библиотеку, чтобы добавить эту функциональность в созданное мной приложение:
https://github.com/fjunqueira/hinter
Это может не соответствовать вашим потребностям, но вы можете смело редактировать его.
https://github.com/tonerdo/readline - это то, что вам нужно. отличная библиотека, доступная в виде nuget от талантливого разработчика tonerdo.
Ссылка на решение приветствуется, но убедитесь, что ваш ответ полезен и без нее: добавить контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели некоторое представление о том, что это такое и почему оно есть, а затем процитируйте наиболее релевантную часть страницы, на которую вы ссылаетесь. если целевая страница недоступна. Ответы, которые представляют собой не более чем ссылку, могут быть удалены.
использование readkey не может быть вызвано параллельно с readline, не так ли? поэтому это означает, что вы теряете функциональность readline, и вам нужно перебирать readkey и добавлять / отображать вручную вводимые данные. Readline имеет функцию вызова истории с помощью клавиши «вверх», вы потеряете ее или вам придется полностью перекодировать ее с помощью клавиши read. Лучше всего для c14n найти гибридное решение. (например, использование строки чтения Async?)