【发布时间】:2012-03-06 02:49:15
【问题描述】:
在 ipython 中,如果我按 'esc' 后跟 'enter'(可能还有其他字符?),readline 会中断。我无法再使用“向上”键搜索命令历史记录,并且某些命令(例如 control-K)失败。
有没有办法在 ipython 会话中重置 readline?当我按下这些键时发生了什么?
【问题讨论】:
在 ipython 中,如果我按 'esc' 后跟 'enter'(可能还有其他字符?),readline 会中断。我无法再使用“向上”键搜索命令历史记录,并且某些命令(例如 control-K)失败。
有没有办法在 ipython 会话中重置 readline?当我按下这些键时发生了什么?
【问题讨论】:
发帖人建议的答案在 iPython 0.12+ 中似乎对我不起作用。我可以跑:
get_ipython().init_readline()
但这似乎没有帮助。
但是我注意到我有时会在 iPython 会话中看到类似的问题。看来我无意中从默认的 Emacs readline 编辑模式切换到了 vi-mode(vim-mode)。根据readline docs 在它们之间切换,您应该能够使用 M-C-j 组合键,但这似乎只允许我切换到 vi 模式。要切换回 Emacs 模式,可以使用 C-e 但这似乎对我不起作用 - 我必须改为使用 M-C-e - 在我的 Mac 上(其中 ESC 用作“元”键)它是: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/
【讨论】: