2012-07-25 5 views
9

Ich verwende einen VT100 Terminal-Emulator unter Linux. In bash scrollen die Pfeile nach oben und unten durch die letzten ausgeführten Befehle. Sie funktionieren wie erwartet.Warum funktionieren Aufwärts- und Abwärts-Pfeilbefehle nicht im Python-Befehlszeileninterpreter?

Vorherige (Pfeil nach oben) und nächste (Pfeil nach unten) Befehle werden im Python-Befehlszeileninterpreter nicht interpretiert. Welche Art von Schlüsselzuordnungen benötige ich, damit dies funktioniert?

Vielen Dank.

+0

Technisch werden Pfeil nach oben und Pfeil nach unten gut interpretiert; Das Problem ist, dass, wenn IDLE ein Textfeld/Textfeld-Feld zum Anzeigen seiner Daten verwendet, das Drücken von "hoch" und "runter" den Cursor im Fenster nach oben oder unten bewegt. Behandeln Sie IDLE nicht wie ein Terminalfenster. – JAB

+0

@JAB Bekannt, aber wie behandle ich es, um den letzten Befehl zu bekommen? – octopusgrabbus

+0

Ich habe IDLE aus dem Titel und dem Post entfernt, weil mir nicht klar ist, dass es einen anderen Begriff für den Python-Kommandozeilen-Interpreter gibt. – octopusgrabbus

Antwort

3

Ich denke, ich habe die Antwort gefunden, vorausgesetzt, Sie haben die GNU Readline-Bibliothek. (Das bedeutet ich teilweise falsch über die Basisimplementierung war eine Unix-artige Schnittstelle, wie es nur das tut, wenn GNU Readline [oder ein Port, ich denke] nicht zur Verfügung.)

http://docs.python.org/tutorial/interactive.html#history-substitution

Die Verlaufsersetzung funktioniert wie folgt. Alle nicht leeren Eingabezeilen werden in einem Verlaufspuffer gespeichert, und wenn eine neue Eingabeaufforderung angezeigt wird, befinden Sie sich in einer neuen Zeile am Ende dieses Puffers. C-P verschiebt eine Zeile (zurück) in den History-Puffer, C-N bewegt sich einen nach unten. Jede Zeile im Verlaufspuffer kann bearbeitet werden; Ein Sternchen erscheint vor der Eingabeaufforderung, um eine geänderte Zeile zu markieren. Durch Drücken der Eingabetaste wird die aktuelle Zeile an den Interpreter übergeben. C-R startet eine inkrementelle Rückwärtssuche; C-S startet eine Vorwärtssuche.

6

Standardmäßig sind die Tastenbelegungen sind:

  • älter: alt-p
  • aktuellere: alt-n

Sie es jeweils in Options -> Configure IDLE -> Keys -> "history-previous" und "history-next" ändern .

+0

Ich habe die ursprüngliche Frage bearbeitet, um anzuzeigen, dass dies die Befehlszeilenversion von IDLE ist. Wie kann ich Optionen über die Befehlszeile einstellen? Vielen Dank. – octopusgrabbus

+0

Ich erinnere mich nicht, ob dies für Terminal-Eingabe gilt oder nicht, aber in IDLE können Sie auch den ersten Teil einer vorherigen Aussage von weiter zurück eingeben, bevor Sie Alt + N drücken, um diese frühere Aussage ohne durch die eine zu erhalten zwischen. – JAB

+2

@octopusgrabbus: Zuletzt habe ich überprüft, IDLE ist eine (ziemlich grundlegende) IDE, die Pythons 'tkinter' Modul verwendet, um eine Tk/TCL-basierte GUI anzuzeigen. Ich habe noch nie davon gehört, dass es eine Befehlszeilenversion davon gibt (obwohl Sie es natürlich von einem Terminal aus starten können). – JAB