在ipython中,如果我按'esc'后跟'enter'(可能还有其他字符?),readline中断。我无法再使用“向上”键搜索命令历史记录,并且某些命令(例如,control-K)失败。
有没有办法在ipython会话中重置readline?按这些键时发生了什么?
答案 0 :(得分:6)
在iPython 0.12+中,海报的建议答案似乎对我不起作用。我可以跑:
get_ipython().init_readline()
但这似乎没有帮助。
但是我注意到我有时会在iPython会话中看到类似的问题。看来我无意中从默认的Emacs readline编辑模式切换到了vi-mode(vim-mode)。根据{{3}}在它们之间切换,你应该能够使用M-C-j组合键,但这似乎只允许我切换到vi模式。要切换回Emacs模式,可以使用Ce,但这似乎对我不起作用 - 我不得不在我的Mac上执行MCe - 其中 ESC 用作'Meta'键)它是: ESC + CTRL + e
我〜/ .inputrc的内容如下:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
答案 1 :(得分:2)
不耐烦了。解决方案是:
IPython.InteractiveShell.init_readline(get_ipython())
看起来这也可能是一个已知错误:http://www.catonmat.net/blog/bash-vi-editing-mode-cheat-sheet/