Soy bastante nuevo en programación, pero me he preguntado cómo los editores de texto de shell como vim, emacs, nano, etc. son capaces de controlar la ventana de línea de comandos. Principalmente soy programador de Windows, así que tal vez sea diferente en * nix. Por lo que yo sé, solo es posible imprimir texto en una consola y solicitar comentarios. ¿Cómo crean los editores de texto una ventana navegable y editable en un entorno de línea de comandos?¿Cómo funcionan los editores de texto de shell?
Respuesta
Mediante el uso de las bibliotecas como la continuación de lo cual, a su vez, el carácter utilización secuencias de escape
NAME ncurses - CRT screen handling and optimization package SYNOPSIS #include DESCRIPTION The ncurses library routines give the user a terminal-independent method of updating character screens with reasonable optimization. This implementation is ‘‘new curses’’ (ncurses) and is the approved replacement for 4.4BSD classic curses, which has been discontinued. [...snip....] The ncurses package supports: overall screen, window and pad manipulation; output to windows and pads; reading terminal input; control over terminal and curses input and output options; environment query routines; color manipulation; use of soft label keys; terminfo capabilities; and access to low-level terminal-manipulation routines.
Aprender acerca de ncurses podría ser un buen punto de partida.
Hay un protocolo antiguo llamado vt100 basado en un terminal "VT100". Utilizaba códigos que comenzaban por el escape para controlar la posición del cursor, el color, borrar la pantalla, etc.
También es la forma de obtener indicaciones en color.
Google VT100 o "códigos de escape"
de edición: busqué en Google para usted: http://www.termsys.demon.co.uk/vtansi.htm
Respuesta corta: hay bibliotecas para ello (como maldiciones, argot).
Respuesta más larga: hacer cosas como saltar con el cursor o cambiar colores se hace imprimiendo secuencias de caracteres especiales (llamadas sectas de escape, porque comienzan con el carácter ESC).
También se dará cuenta cuando se teclea "editar" en una consola de línea de comandos de Windows. Esta "característica" no es exclusiva de los sistemas tipo Unix, aunque los conceptos para manipular la consola de Windows de esa manera son bastante diferentes a los de Unix.
Más específica de la línea de comandos de Windows, la aplicación normalmente llama a funciones de DOS o BIOS que hacen lo mismo. A veces, el soporte de código de comando ANSI está disponible, a veces no (dependiendo de la versión exacta del sistema operativo MS y si está configurado para cargarlo).
En los sistemas Unix, una ventana de consola emula una antigua terminal en serie (generalmente un VT100). Puede imprimir caracteres de control especiales y secuencias de escape para mover el cursor, cambiar colores y hacer otros efectos especiales. Hay bibliotecas para ayudar a manejar los detalles; ncurses es el más popular.
En Windows, el [API Win32 Consola] (http://msdn.microsoft.com/en-us/library/ms682073(VS.85%29.aspx) proporciona una funcionalidad similar, pero de una manera bastante diferente
Tipo "C: \ WINNT \ system32 \ editar". O "c: \ windows \ system32 \ editar "en la línea de comandos, y se le mostrará un editor de texto de línea de comandos.
La mayoría de las personas tiene razón sobre el carácter ESC que se utiliza para controlar la pantalla de comandos, pero algunos programas anteriores también escriben caracteres directamente en la memoria espacio utilizado por la pantalla de línea de comandos de Windows.
Para controlar la ventana de línea de comandos, Solía tener que escribir sus propios formularios de ventana, cuadro de entrada, menús, etc. También tendría que resumir todo eso en un gran bucle para manejar eventos.
- 1. ¿Cómo funcionan los editores de texto en línea?
- 2. ¿Cómo funcionan los editores de texto enriquecido en línea?
- 3. ¿Editores de texto con el modo vim?
- 4. ¿Editores de texto con terminal incorporada?
- 5. ¿Hay buenos editores de texto F #?
- 6. ¿Cómo funcionan los instaladores binarios de Linux (.bin, .sh)?
- 7. ¿Haces una distinción entre editores de texto e IDE?
- 8. Soporte de Jython en los editores?
- 9. ¿Cómo funcionan los greenlets?
- 10. Marcas de margen derecho en editores de texto VS2010
- 11. ¿Cómo funcionan los modelos Django?
- 12. ¿Qué editores de texto manejan los saltos de línea estilo Windows y Unix correctamente?
- 13. ¿Cómo funcionan las aplicaciones de diferenciación de texto?
- 14. Encuadernación en cuadros de texto no funcionan
- 15. Editores PHP para Ubuntu
- 16. ¿Cómo funcionan los oyentes de eventos?
- 17. ¿Cómo funcionan los "punteros" de Java?
- 18. ¿Cómo funcionan los intérpretes/motores de JavaScript?
- 19. ¿Cómo funcionan los operadores de C++
- 20. ¿Cómo funcionan exactamente los sinónimos de tipo?
- 21. ¿Cómo funcionan los puntos de bwmorph?
- 22. ¿Cómo funcionan los "criterios" de Mongoid?
- 23. Los argumentos perezosos de Scala: ¿Cómo funcionan?
- 24. ¿Cómo funcionan los perfiladores de código?
- 25. ¿Cómo funcionan los controles remotos de git?
- 26. ¿Cómo funcionan los algoritmos de recomendación automatizados?
- 27. ¿Cómo funcionan los descriptores de archivos?
- 28. ¿Cómo funcionan los 'bloques' de Clang?
- 29. Aprendiendo cómo funcionan los lenguajes de programación
- 30. ¿Cómo funcionan los programas de reconocimiento facial?
Haciendo un editor de texto en Windows Shell: simplemente descargue el ahora visual basic dos 1, ahora libre, puede hacer fácilmente un clon edit.com con eso.-O BIEN- Para aquellos que quieran hacer editores en escenarios * nix/bsd/osx: ncurses tiene un buen método para hacerlo, usando 'pads' para contener todo el documento (o para mantener la cantidad más grande que pueda en memoria antes de almacenar en búfer), esto le permite copiar esencialmente una 'ventana' del búfer a la pantalla e incluso desplazarlo, ingresar texto, etc. Un buen libro para leer es: Guía del programador de NCurses ISBN 978-0470107591 (ncurses es MUCHO más fácil que ¡puedes pensar!) – osirisgothra