6

在我安装 ipython 的过程中,我遇到了一个奇怪的问题,我无法使用向上和向下箭头可靠地浏览命令历史......很多时候它只是不起作用(按键时没有任何反应)。有时在命令末尾写普通字符也是行不通的。

我的系统:Mac OSX Lion

我已经安装了readline...

感谢您的帮助!大卫

4

4 回答 4

7

确保在ipython之前安装了 readline 。

sudo pip uninstall ipython

sudo pip install readline ipython

(我知道这个问题已经有几个月了,但供将来参考)

于 2013-01-17T18:00:25.970 回答
5

我必须安装 readlineeasy_install readline并修复它。使用pip install readline对我不起作用,并且 ipython 给出了警告:

******************************************************************************
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).
******************************************************************************
于 2013-05-09T18:41:01.327 回答
0

在 iPython 和上下箭头访问历史的麻烦之后,浏览这篇文章,一个简单的解决方案(关闭“滚动锁定”)结果对我有用。

于 2015-04-17T07:47:04.197 回答
0

这是 IPython 的一个有意的特性。如果您键入“abc”然后点击向上箭头,它将仅滚动以“abc”开头的行。如果您在滚动时点击左/右,它会触发相同的行为。当前行的全部内容被解释为您的搜索前缀,任何仅以 all 开头的行都将显示在进一步的向上/向下按键上。

您可以在PYTHONSTARTUP文件中更改此行为。我有以下几行:

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

如果你好奇,这里是我们覆盖的 IPython 源代码中的绑定。

不相关,但我也想覆盖 readline 的默认 ctrl-w:

# Ctrl-W behavior more like Vim
readline.parse_and_bind('"\\C-w": backward-kill-word')
于 2015-10-29T19:46:07.723 回答