iPython:按"ESC"键会中断读取行



在ipython中,如果我按"esc"然后按"enter"(可能还有其他字符?),读线就会中断。我无法再使用"向上"键搜索命令历史记录,并且某些命令(例如control-K)失败。

有没有一种方法可以在ipython会话中重置readline?我按这些键时发生了什么事?

海报建议的答案在iPython 0.12+中似乎对我不起作用。我可以运行:

get_ipython().init_readline()

但这似乎于事无补。

然而,我注意到,我有时会在我的iPython会话中看到类似的问题。我似乎无意中从默认的Emacs readline编辑模式切换到了vi模式(vim模式)。根据在它们之间切换的readline文档,你应该能够使用M-C-j组合键,但这似乎只允许我切换到vi模式。要切换回Emacs模式,可以使用C-e,但这似乎对我不起作用-我不得不在我的Mac上使用M-C-e(其中ESC被用作"Meta"键),它是:ESC+CTRL+e

我的~/.inputrc的内容如下:

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on

不耐烦了。解决方案是:

IPython.InteractiveShell.init_readline(get_ipython())

看起来这可能也是一个已知的错误:http://www.catonmat.net/blog/bash-vi-editing-mode-cheat-sheet/

最新更新