2012-10-22 3 views
6

Nella mia installazione di ipython ho questo strano problema in cui non posso spostarmi in modo affidabile attraverso la cronologia dei comandi con frecce su e giù ... un sacco di volte semplicemente non funziona (non succede nulla sulla pressione dei tasti). Anche a volte scrivere caratteri normali alla fine del comando non funziona.ipython su e giù freccia strano comportamento

Il mio sistema: Mac OSX Lion

ho readline installato ...

grazie per l'aiuto! david

+0

Quale frontend? Classico ipython o qtconsole? Quale versione? 0.13.1 è stato rilasciato poche ore fa. Puoi provare ad aprire un problema su github. – Matt

+0

Matt, grazie per aver scritto ... Per rispondere alla tua domanda: ipython classico ... Ho provato 0.13.1 ed è lo stesso. Sì, forse aprirò il problema, grazie per il suggerimento. – davidhq

risposta

7

Assicurarsi di aver installato readline prima di ipython.

sudo pip uninstall ipython

sudo pip install readline ipython

(So che questa domanda è a pochi mesi di vita, ma per riferimento futuro)

+1

Non ho dovuto disinstallare ipython. Solo "easy_install readline" ha fatto il trucco. – Varuna

+1

è necessario installare ncurses-devel (per redhat) o libncurses5-dev per debian/ubuntu se si ottiene "-lncurses" errore non trovato durante l'esecuzione di pip – Bedros

5

ho dovuto installare readline con easy_install readline e quello fissato esso. Utilizzando pip install readline non ha funzionato per me, e ipython ha dato un avvertimento:

****************************************************************************** 
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

Per me, l'installazione di 'readline' prima quindi' ipython' ha funzionato. –

0

seguito problemi ipython e monte oa & frecce -down per accedere alla cronologia, e la navigazione in questo post, una soluzione semplice (spegnere "Scroll lock ") si è rivelato funzionante per me.

+0

Potresti per favore elaborare più la tua risposta aggiungendo un po 'più di descrizione della soluzione che fornisci? – abarisone

0

Questa è una funzionalità intenzionale di IPython. Se si digita "abc" e poi si preme la freccia su, si scorrerà solo attraverso le righe che iniziano con "abc". Se premi lift/right mentre stai scorrendo, si attiva lo stesso comportamento. L'intero contenuto della riga corrente viene interpretato come prefisso di ricerca, qualsiasi riga che inizia con tutto ciò che verrà visualizzato su ulteriori tasti su/giù.

È possibile modificare questo comportamento nel file PYTHONSTARTUP. Ho le seguenti linee:

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') 

Se siete curiosi, here are the bindings in IPython's source code che stiamo ignorando.

non collegati, ma mi piace anche per ignorare di readline predefinito ctrl-w:

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