2012-10-22 13 views
6

W mojej instalacji ipython mam ten dziwny problem, w którym nie mogę niezawodnie przechodzić przez historię poleceń za pomocą strzałek w górę iw dół ... przez wiele czasu to po prostu nie działa (nic się nie dzieje na naciśnięciu klawisza). Czasem też nie działa normalne pisanie na końcu polecenia.ipython strzałka w górę iw dół dziwne zachowanie

Mój system: Mac OSX Lion

Mam zainstalowany readline ...

dziękuję za pomoc! david

+0

Które frontend? Klasyczny ipython lub qtconsole? Która wersja? 0.13.1 zostało wydane kilka godzin temu. Możesz spróbować otworzyć problem na github. – Matt

+0

Matt, dziękuję za pisanie ... Aby odpowiedzieć na twoje pytanie: klasyczny ipython ... Próbowałem 0.13.1 i to jest to samo. Tak, może otworzę numer - dziękuję za podpowiedź. – davidhq

Odpowiedz

7

Upewnij się, że zainstalowałeś readline przed ipython.

sudo pip uninstall ipython

sudo pip install readline ipython

(wiem, że to pytanie jest kilka miesięcy, ale w przyszłości)

+1

Nie musiałem odinstalowywać ipython. Po prostu "easy_install readline" załatwił sprawę. – Varuna

+1

musisz zainstalować ncurses-devel (dla redhat) lub libncurses5-dev dla debian/ubuntu, jeśli pojawi się błąd "-lncurses" przy uruchomieniu pip – Bedros

5

musiałem zainstalować readline z easy_install readline i naprawić go. Korzystanie pip install readline nie działa na mnie, a ipython dał ostrzeżenie:

****************************************************************************** 
libedit detected - readline will not be well behaved, including but not limited to: 
    * crashes on tab completion 
    * incorrect history navigation 
    * corrupting long-lines 
    * failure to wrap or indent lines properly 
It is highly recommended that you install readline, which is easy_installable: 
    easy_install readline 
Note that `pip install readline` generally DOES NOT WORK, because 
it installs to site-packages, which come *after* lib-dynload in sys.path, 
where readline is located. It must be `easy_install readline`, or to a custom 
location on your PYTHONPATH (even --user comes after lib-dyload). 
****************************************************************************** 
+0

Dla mnie, najpierw zainstalowałem 'readline', a następnie' ipython'. –

0

Following kłopoty w ipython i góra-& -down strzałek, aby uzyskać dostęp do historii, a przeglądający ten post, to proste rozwiązanie (wyłącz „Scroll lock ") okazało się działać dla mnie.

+0

Czy mógłbyś jeszcze bardziej rozwinąć swoją odpowiedź, dodając nieco więcej opisu dostarczonego rozwiązania? – abarisone

0

Jest to celowa funkcja IPython. Jeśli wpiszesz "abc", a następnie uderzysz strzałkę w górę, będzie ona przewijać tylko przez linie zaczynające się od "abc". Jeśli naciśniesz przycisk podnoszenia/w prawo podczas przewijania, uruchamia to samo zachowanie. Cała zawartość bieżącej linii jest interpretowana jako twój prefiks wyszukiwania, wszystkie linie zaczynające się od wszystkich, które pojawią się przy kolejnych naciśnięciach klawiszy w górę/w dół.

Możesz zmienić to zachowanie w swoim pliku PYTHONSTARTUP. Mam następujące linie:

import readline 
# Prevent ctrl-p/ctrl-n/Up/Down from doing prefix searching 
readline.parse_and_bind('"\\C-p": previous-history') 
readline.parse_and_bind('"\\C-n": next-history') 
readline.parse_and_bind('"\\e[A": previous-history') 
readline.parse_and_bind('"\\e[B": next-history') 

Jeśli jesteś ciekawy, here are the bindings in IPython's source code że jesteśmy nadrzędnymi.

niezwiązane, ale lubię też przesłonić domyślne readline za CTRL-W:

# Ctrl-W behavior more like Vim 
readline.parse_and_bind('"\\C-w": backward-kill-word') 
Powiązane problemy