2012-07-25 10 views
9

Używam emulatora terminala VT100 w systemie Linux. W bashu strzałki w górę iw dół przewijają ostatnie wykonane polecenia; działają zgodnie z oczekiwaniami.Dlaczego polecenia ze strzałkami w górę iw dół nie działają w interprerze wiersza poleceń Pythona?

Polecenia poprzedzające (strzałka w górę) i następne (strzałki w dół) nie są interpretowane w interprerze wiersza poleceń Python. Jakiego rodzaju mapowania klawiszy potrzebuję, aby to działało?

Dziękuję.

+0

Technicznie, strzałka w górę i w dół są interpretowane dobrze; Problem polega na tym, że ponieważ IDLE używa okna typu textbox/textfield do wyświetlania swoich danych, naciśnięcie "up" i "down" po prostu przesuwa kursor w górę lub w dół w oknie. Nie traktuj IDLE jak okna terminala. – JAB

+0

@JAB Zauważono, ale jak traktować go, aby uzyskać ostatnie polecenie? – octopusgrabbus

+0

Usunąłem IDLE z tytułu i postu, ponieważ nie jest dla mnie jasne, że jest inny termin dla interpretera wiersza poleceń Pythona. – octopusgrabbus

Odpowiedz

3

Myślę, że znalazłem odpowiedź, zakładając, że masz bibliotekę GNU Readline. (To znaczy, że był częściowo źle o realizacji podstawy przy użyciu interfejsu stylu Unix, jak to robi, że gdy tylko GNU readline [lub port, chyba] nie jest dostępna.)

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

Zmiana historii działa w następujący sposób. Wszystkie niepuste linie wejściowe są zapisywane w buforze historii, a po otrzymaniu nowego pytania jesteś umieszczony w nowej linii na dole tego bufora. C-P przesuwa o jeden wiersz w górę (w tył) w buforze historii, C-N przesuwa jeden w dół. Dowolną linię w buforze historii można edytować; przed znakiem zachęty pojawi się gwiazdka oznaczająca zmodyfikowaną linię. Naciśnięcie klawisza Return przekazuje bieżącą linię do tłumacza. C-R rozpoczyna się inkrementalne wyszukiwanie wsteczne; C-S rozpoczyna wyszukiwanie w przód.

6

Domyślnie mapowania klawiatury to:

  • starsze: alt-p
  • nowsza: alt-n

Można go zmienić w Options -> Configure IDLE -> Keys -> "history-previous" i "history-next" odpowiednio .

+0

Zmodyfikowałem oryginalne pytanie, aby wskazać, że jest to wersja wiersza poleceń IDLE. Jak ustawić opcje za pomocą wiersza poleceń? Dzięki. – octopusgrabbus

+0

Nie pamiętam, czy jest to prawdą dla wejścia terminala czy nie, ale w IDLE można również wpisać pierwszą część poprzedniej instrukcji z powrotem przed naciśnięciem Alt + N w celu pobrania wcześniejszej instrukcji bez przechodzenia przez te wcześniejsze pomiędzy. – JAB

+2

@octopusgrabbus: Ostatnio sprawdziłem, IDLE to (dość podstawowe) IDE, które wykorzystuje moduł 'tkinter' w języku Python do wyświetlania GUI opartego na Tk/TCL. Nigdy nie słyszałem o wersji z wiersza poleceń (choć oczywiście można ją uruchomić z terminala). – JAB

Powiązane problemy