Haga que la aplicación de consola win C # muestre un comando posibile cuando el usuario presione TAB

StackOverflow https://stackoverflow.com/questions/1821042

  •  10-07-2019
  •  | 
  •  

Pregunta

Estoy desarrollando una aplicación de consola en C # con muchos parámetros y, en algún momento, como desarrollador, no puedo recordar la combinación de parámetros para llamar a la aplicación de la manera correcta, ni siquiera puedo pensar en cómo lo harán los usuarios. Así que le pregunto si está allí y cuál será la forma adecuada (académica) de hacer que mi aplicación actúe como los sistemas operativos UNIX. Sabes que lo que intento lograr es que cuando el usuario llama a la aplicación y luego cuando presionas una TAB, obtienes una lista de posibles comandos, luego de elegir uno de los comandos nuevamente presiona una pestaña y obtienes una lista de parámetros y otros comandos.

¿Fue útil?

Solución

Desarrolle su aplicación como PowerShell CmdLet . Powershell ya tiene una infraestructura de compleción de pestañas incorporada. Por ejemplo, si hace lo siguiente para el directorio CmdLet:

dir - Tab

luego presionar Tab repetidamente pasará por las posibles opciones para el comando dir :

  • dir -Path
  • dir -LiteralPath
  • dir -Filtro
  • dir -Incluir

Etcetera.

Otros consejos

Creo que la forma más fácil de hacer esto es usar el Console.ReadKey método. Esto le permitirá obtener la tecla de tabulación tan pronto como la presione el usuario. Luego puede manejar esa pulsación de tecla y, si se trata de una pestaña, determinar el contexto actual e imprimir los comandos según corresponda.

Si entiendo correctamente, desea imitar la finalización de la línea de comandos programable en zsh (Z shell).

Desafortunadamente, esta funcionalidad está integrada en el shell, aunque también es programable; la finalización que ocurre allí está sucediendo antes de que se inicie el programa.

Si estaba ejecutando zsh en Windows, lo que debería ser posible con Cygwin, podría programarlo para ayudarlo a completar la línea de comandos.

De lo contrario, creo que su única opción es iniciar una especie de sesión interactiva una vez que se haya iniciado el programa; por ejemplo, imprima todas las opciones cuando se inicie el programa y espere a que el usuario ingrese uno de los parámetros, luego muestre todas las combinaciones posibles de parámetros siguientes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top