Question

Je suis assez nouveau en programmation, mais je me suis demandé comment des éditeurs de texte tels que vim, emacs, nano, etc. peuvent contrôler la fenêtre de ligne de commande. Je suis principalement un programmeur Windows, alors c'est peut-être différent sur * nix. Autant que je sache, il est uniquement possible d'imprimer du texte sur une console et de demander son apport. Comment les éditeurs de texte créent-ils une fenêtre navigable et éditable dans un environnement de ligne de commande?

Était-ce utile?

La solution

En utilisant des bibliothèques telles que les suivantes, qui utilisent à leur tour des séquences de caractères d'échappement

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.

Autres conseils

Réponse courte: il existe des bibliothèques pour cela (comme les malédictions, l'argot).

Réponse plus longue: pour sauter au curseur ou changer de couleur, vous devez imprimer des séquences de caractères spéciaux (appelées séquences d'échappement, car elles commencent par le caractère ESC).

En savoir plus sur ncurses pourrait être un bon point de départ.

Il existe un ancien protocole appelé vt100 basé sur un "VT100". Terminal. Il utilisait des codes commençant par échap pour contrôler la position du curseur, la couleur, effacer l’écran, etc.

C’est aussi la façon dont vous obtenez des invites colorées.

Google VT100 ou "codes d'échappement de terminal"

edit: Je l'ai googlé pour vous: http: //www.termsys.demon .co.uk / vtansi.htm

Vous le remarquerez également si vous tapez & edit; edit " dans une console de ligne de commande Windows. Ce " fonctionnalité " n’est pas propre aux systèmes de type Unix, bien que les concepts permettant de manipuler la console Windows de cette manière soient assez différents de ceux utilisés sous Unix.

Sur les systèmes Unix, une fenêtre de console émule un ancien terminal série (généralement un VT100 ). . Vous pouvez imprimer des caractères de contrôle spéciaux et des séquences d'échappement pour déplacer le curseur, modifier les couleurs et créer d'autres effets spéciaux. Il existe des bibliothèques pour aider à gérer les détails; ncurses est le plus populaire.

Sous Windows, la [API de la console Win32] ( http://msdn.microsoft.com/en-us/library/ms682073 (VS.85% 29.aspx) fournit des fonctionnalités similaires, mais d'une manière assez différente.

Tapez " c: \ winnt \ system32 \ edit " ou " c: \ windows \ system32 \ edit " sur la ligne de commande, un éditeur de texte en ligne de commande s’affiche.

Les gens ont généralement raison en ce qui concerne le caractère ESC utilisé pour contrôler l'écran de commande, mais certains programmes plus anciens écrivent également des caractères directement dans l'espace mémoire utilisé par l'écran de ligne de commande Windows.

Afin de contrôler la fenêtre de ligne de commande, vous deviez écrire vos propres formulaires, zone de saisie, menus, etc. Il fallait également envelopper tout cela dans une grande boucle pour gérer les événements.

Plus spécifique de la ligne de commande Windows, l'application appelle généralement les fonctions DOS ou BIOS qui font la même chose. Parfois, le support du code de commande ANSI est disponible, parfois non (en fonction de la version exacte de MS OS et de sa configuration pour le charger).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top