質問
.NET (C#) コンソール アプリケーションにタブ補完を実装する方法について何かアイデアはありますか?これは、次のように、実行されてユーザー入力に対してループするアプリケーション内でのことを意味します (引数なしで ftp.exe を実行した場合など)。
string line = string.Empty;
while (line != "exit")
{
//do something here
Console.ReadLine();
}
おそらく実際には readline を使用できないことはわかっていますが、ユーザーからの入力を取得するのと同じ時点でタブ補完を実行できるようにしたいと考えています。
解決
Mono プロジェクトのコードを見てください。http://tirania.org/blog/archive/2008/Aug-26.html先日、それで少し遊んでみました。多くのコマンドライン編集を行いますが、行補完は行わないと思います。
他のヒント
Console.ReadKey() を実行します。
Tab を取得した場合は、コマンド バッファーにあるものを確認し、使用可能なコマンドをループします。もし someCommand.Name.BeginsWith(currentinput)
, 、勝者が決まり、可能なコマンドのリストをスクリーニングするように書くことができます。
もし 一つしかない(TM) ユーザーが入力したものに置き換えることができます:)
私が作成したアプリにこの機能を追加するための小さなライブラリを作成しました。
https://github.com/fjunqueira/hinter
ニーズに合わないかもしれませんが、自由に編集できます。
所属していません StackOverflow