Wie arbeiten Shell-Texteditoren?

7

Ich bin ziemlich neu in der Programmierung, aber ich habe mich gefragt, wie Shell-Texteditoren wie vim, emacs, nano usw. das Befehlszeilenfenster steuern können. Ich bin hauptsächlich ein Windows-Programmierer, also ist es vielleicht anders auf * nix. Soweit ich weiß, ist es nur möglich, Text auf einer Konsole zu drucken und nach Eingabe zu fragen. Wie erstellen Texteditoren ein navigierbares, bearbeitbares Fenster in einer Befehlszeilenumgebung?

    
user25870 07.10.2008, 16:27
quelle

8 Antworten

9

Indem Sie Bibliotheken wie die folgenden verwenden, die wiederum Escape-Zeichenfolgen verwenden

%Vor%     
Vinko Vrsalovic 07.10.2008, 16:33
quelle
5

Kurze Antwort: Es gibt Bibliotheken dafür (wie Flüche, Slang).

Längere Antwort: Dinge wie das Springen mit dem Cursor oder das Ändern der Farben werden durch das Drucken spezieller Zeichenfolgen (sogenannte Escape-Sequenzen, weil sie mit dem ESC-Zeichen beginnen) ausgeführt.

    
Sec 07.10.2008 16:29
quelle
3

Wenn Sie etwas über ncurses erfahren, ist das ein guter Ausgangspunkt.

    
EfForEffort 07.10.2008 16:28
quelle
3

Es gibt ein altes Protokoll namens vt100, das auf einem "VT100" Terminal basiert. Es verwendete Codes, die mit Escape begannen, um die Cursorposition, die Farbe, das Löschen des Bildschirms usw. zu steuern.

Sie erhalten auch farbige Eingabeaufforderungen.

Google VT100 oder "Terminal-Escape-Codes"

edit: Ich habe es für Sie gegoogelt: Ссылка

    
Bill K 07.10.2008 16:28
quelle
3

Sie werden dies auch bemerken, wenn Sie in einer Windows Kommandozeile "edit" eingeben. Dieses "Feature" ist nicht einzigartig für Unix-ähnliche Systeme, obwohl die Konzepte zum Manipulieren der Windows-Konsole auf diese Weise ziemlich anders sind als in Unix.

    
Chris 07.10.2008 16:33
quelle
2

Auf Unix-Systemen emuliert ein Konsolenfenster ein altes serielles Terminal (normalerweise ein VT100 ). Sie können spezielle Steuerzeichen und Escape-Sequenzen drucken, um den Cursor zu bewegen, Farben zu ändern und andere Spezialeffekte auszuführen. Es gibt Bibliotheken, die helfen, die Details zu behandeln; ncurses ist am beliebtesten.

Unter Windows wird die [Win32 Console API] ( bietet ähnliche Funktionalität, aber auf eine andere Art und Weise.

    
cjm 07.10.2008 16:48
quelle
2

Geben Sie in der Befehlszeile "c: \ winnt \ system32 \ edit" oder "c: \ windows \ system32 \ edit" ein, und Sie sehen einen Befehlszeilen-Texteditor.

Mit dem ESC-Zeichen, das zur Steuerung des Befehlsbildschirms verwendet wird, haben die meisten Leute recht, aber einige ältere Programme schreiben auch Zeichen direkt in den Speicherbereich, der vom Windows-Befehlszeilenbildschirm verwendet wird.

Um das Befehlszeilenfenster zu steuern, mussten Sie Ihre eigenen Fensterformulare, Eingabefelder, Menüs usw. schreiben. Sie müssten das Ganze auch in eine große Schleife für die Behandlung von Ereignissen einpacken.

    
seanyboy 07.10.2008 16:54
quelle
0

Mehr Windows-Befehlszeilen-spezifisch, ruft die App normalerweise DOS- oder BIOS-Funktionen auf, die dasselbe tun. Manchmal ist ANSI-Befehlscodeunterstützung verfügbar, manchmal nicht (abhängig von der genauen MS-Betriebssystemversion und ob sie zum Laden konfiguriert ist).

    
Brian Knoblauch 07.10.2008 16:38
quelle

Tags und Links