2 Stimmen

Wie kann man eine interaktive Promp mit Pfeiltastenfunktionalität erstellen?

Ich mache eine interpretierte Sprache. Ich verwende eine interaktive Eingabeaufforderung, in die ich Ausdrücke eingebe, die ausgewertet werden sollen (eine REPL). Ich habe mich gefragt, wie ich das Standardverhalten der Eingabeaufforderung implementieren kann? Wie das Drücken der Pfeiltasten nach oben und unten, um in der Befehlshistorie zu navigieren, und das Drücken der Pfeiltasten nach links und rechts, um den Textcursor zu bewegen, anstatt die Codes ^[[D^[[C^[[A^[[B zu drucken. Ich weiß nur nicht, wie ich diese oder generell Steuerzeichen abfangen soll.

Ich arbeite mit Linux. Muss ich ncurses oder eine externe Bibliothek verwenden, oder kann ich es mit eingebauten Funktionen machen? Das hat zwar nichts mit meiner Sprache zu tun, aber es macht mich wahnsinnig, die Eingabeaufforderung so zu benutzen, ohne Navigation. Das macht das Testen schwieriger.

2voto

amphetamachine Punkte 24877

Hier ist ein Beispiel für ein C-Programm, mit dem Sie genau das tun können readline (muss kompiliert werden mit -lncurses -lreadline ):

#include <stdio.h>
#include <curses.h>
#include <readline/readline.h>
#include <readline/history.h>

int main (void) {
    char *input = readline("$ ");
    printf("You typed `%s'!\n", input);
    return 0;
}

Im Grunde ahmt es das Kommandozeilenverhalten für Metatasten wie Home/End und die Richtungspfeiltasten nach. Aber das hängt alles davon ab, ob Sie Ihre inputrc richtig konfiguriert haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X