2008-10-07 13 views
7

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?

+0

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

Respuesta

9

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. 

3

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

5

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).

3

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.

0

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).

2

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

2

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.

Cuestiones relacionadas