Leichtgewichtige GNU-Readline-Alternative

Lesezeit: 3 Minuten

Benutzeravatar von punekr12
punekr12

Ich suche nach einer GNU-Readline-Alternative. Es verfügt über viele Funktionen, aber nur wenige davon sind für mich nützlich, wie unten erläutert –

Ich arbeite an einer interaktiven Eingabeaufforderungsanwendung (zeigen Sie die Eingabeaufforderung an und akzeptieren Sie den nächsten auszuführenden Benutzerbefehl). Ich möchte einige Bearbeitungs- und Verlaufsfunktionen für die Eingabeaufforderung implementieren. Wenn der Benutzer also die UP-Taste drückt, sollte der letzte Ausführungsbefehl angezeigt werden. Außerdem sollte der Benutzer in der Lage sein, mit den Pfeiltasten zu navigieren, wenn er Tippfehler oder Befehlsschalter usw. bearbeiten muss.

Unter Windows existiert bereits etwas Ähnliches, falls Sie es verwenden fgets oder scanf Um die Eingabe an der cmd-Eingabeaufforderung zu erhalten, verwaltet sie bereits den Verlauf und lässt Sie auch bearbeiten.

Gibt es eine gute Option unter Linux?

  • Ernsthaft? Ist das eine Art Visual Studio-Add-On?

    – Ente

    31. Juli 2013 um 23:28 Uhr

  • @Duck danke, ich verwende C. Ich verwende VS, bin mir aber nicht sicher, ob es sich um ein Add-On handelt.

    – punekr12

    31. Juli 2013 um 23:37 Uhr

  • Was ist falsch daran, nur readline zu verwenden? Es lässt sich ganz einfach in Ihre Anwendung integrieren.

    – Rici

    31. Juli 2013 um 23:40 Uhr

  • @rici es scheint so funktionsreich zu sein, dass ich sehen wollte, ob es etwas Einfacheres / Leichteres gibt

    – punekr12

    31. Juli 2013 um 23:47 Uhr

  • Rici und Duck haben vollkommen recht. Unter Linux kann sich sogar die Größe des Terminalfensters jederzeit ändern, sodass die Bibliothek die Linie entsprechend neu zeichnen muss. Da Locales außerdem verschiedene Zeichensätze und nicht druckbare und spezielle Sequenzen unterstützen, muss die Bibliothek zählen können Glyphen anstelle von Eingabebytes, um zu verfolgen, wie lange die Eingabe auf dem Bildschirm angezeigt wird, während die Länge im Speicher völlig unterschiedlich sein kann. Ich würde mitgehen readline() aus der readline-Bibliothek einfach wegen seiner Benutzerfreundlichkeit und Benutzerfreundlichkeit. (Benutzer wie ich haben ihre eigenen Macken ~/.inputrc.)

    – Nominelles Tier

    1. August 2013 um 0:03 Uhr

Benutzeravatar von G. Cito
G. Cito

Das ist ein bewundernswertes Ziel, wie ich finde 🙂

Vielleicht Leitungsrauschen, libedit/editline oder Tekla würde die Rechnung passen?

Von diesen ist wahrscheinlich libedit am weitesten verbreitet – zB die postgreqsql-Client-Shell und verschiedene BSD-Dienstprogramme für Kerberos und ntp (obwohl es für die Upstream-Quellen aufgrund der weit verbreiteten Verwendung von libreadline unter Linux möglicherweise nicht die standardmäßige Zeilenbearbeitungsbibliothek für die Kompilierung ist). Es gibt ein paar leicht unterschiedliche Versionen von libedit/editline, wie Sie sehen werden, wenn Sie einige dieser Referenzen lesen und weiter recherchieren.

Tschüss und viel Erfolg bei deinem Projekt.

  • Linenoise funktioniert gut, um die Funktionalität in der Perl6 (jetzt Raku) REPL zu aktivieren. Sehen: course.raku.org/essentials/running-programs/from-repl

    – jubelnd1

    1. September 2021 um 20:32 Uhr


  • @jubilatious1 Tolle Neuigkeiten! Ich habe Raku schon eine Weile nicht mehr verfolgt. Ich denke, ein Raku-REPL, der das Beste aus mischt re.pl, R, Scala usw. und ein “eingebautes” GUI-Framework, das Ideen von Electron, ggplotgui und mojolicoius (!) stiehlt, ist unvermeidlich. Es ist eine so schnell zu schreibende Sprache, mit der man arbeiten kann.

    – G. Cito

    3. September 2021 um 20:30 Uhr


  • Wir brauchen dich zurück! Fühlen Sie sich frei, Ihr Fachwissen hinzuzufügen github.com/rakudo/rakudo/issues/4402 und github.com/rakudo/rakudo/issues/4196 . Prost.

    – jubelnd1

    9. September 2021 um 16:21 Uhr


Es gibt replxx, eine BSD-lizenzierte Alternative zu readline. Es funktioniert unter Linux, BSD, Solaris und Windows. Es unterstützt Funktionen, die Sie von interaktiven Konsolenprogrammen erwarten, nämlich:

  • Zeilenbearbeitung
  • Geschichte
  • Satzstellung markieren
  • Hinweise
  • UTF-8
  • benutzerdefinierte Tastenbelegung (unterstützt (Umschalt/Strg)F1 – F12)
  • mehrfädiger Druck

Ich denke, die moderne Alternative zu GNU Readline ist Jupyter Notebook. Die Idee ist, dass Sie keine ausführbare Datei erstellen, die mit einer Zeileneditorbibliothek verknüpft ist. Stattdessen sollten Sie nur den Kernel bereitstellen und die Benutzer können ihre eigene Notebook-Benutzeroberfläche auswählen, entweder CUI, webbasierte GUI oder sogar eine IDE wie VS Code.

1432440cookie-checkLeichtgewichtige GNU-Readline-Alternative

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy