ユーザーがTABを押したときにposibileコマンドを表示するようにwin C#コンソールアプリケーションを作成する
-
10-07-2019 - |
質問
私は多くのパラメーターを使用してC#でコンソールアプリケーションを開発していますが、開発者がアプリケーションを正しい方法で呼び出すためのパラメーターの組み合わせを思い出せず、ユーザーがそれを行う方法さえ考えられません。そこで、あなたがそこにいて、自分のアプリケーションをそれらのUNIX OSのように振る舞わせるための適切な(学問的な)方法を尋ねます。私が達成しようとしているのは、ユーザーがアプリケーションを呼び出した後、TABを押すと可能なコマンドのリストを取得し、コマンドの選択後にタブをもう一度押してパラメータと他のコマンドのリファレントリストを取得することです。
解決
PowerShell CmdLet 。 Powershellには既にタブ補完インフラストラクチャが組み込まれています。たとえば、dir CmdLetに対して以下を実行する場合:
dir-
Tab
[ Tab ]を繰り返し押すと、 dir
コマンドで使用可能なオプションが順に表示されます。
- dir -Path
- dir -LiteralPath
- dir -Filter
- dir-含める
Etcetera。
他のヒント
これを行う最も簡単な方法は、 Console.ReadKey メソッド。これにより、ユーザーがタブキーを押すとすぐにタブキーを取得できます。その後、そのキーストロークを処理し、それがタブである場合、現在のコンテキストを決定し、必要に応じてコマンドを出力できます。
正しく理解しているのであれば、zsh(Zシェル)のプログラム可能なコマンドライン補完を模倣したいでしょう。
残念ながら、この機能はシェルにも組み込まれていますが、プログラム可能です。そこに起こる完了は、プログラムが起動される前に実際に起こっています。
Cygwinで可能になるはずのWindowsでzshを実行している場合は、コマンドラインの補完を支援するようにプログラムできます。
それ以外の場合、唯一のオプションは、プログラムの起動後に一種の対話型セッションを開始することだと思います。たとえば、プログラムの起動時にすべてのオプションを印刷し、ユーザーがパラメーターの1つを入力するのを待ってから、可能なすべてのパラメーターの組み合わせを表示します。