【问题标题】:ipython: pressing 'esc' key breaks readlineipython:按“esc”键会中断readline
【发布时间】:2012-03-06 02:49:15
【问题描述】:

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

有没有办法在 ipython 会话中重置 readline?当我按下这些键时发生了什么?

【问题讨论】:

    标签: readline ipython


    【解决方案1】:

    发帖人建议的答案在 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
    

    【讨论】:

    • 我遇到了类似的问题:在不幸的一系列击键之后,emacs 模式停止工作。 ESC+CTRL+e 完成了重置回 Emacs 模式的技巧。 Linux x86_64 上的 Ipython 1.2.1。
    【解决方案2】:

    不耐烦了。解决办法是:

    IPython.InteractiveShell.init_readline(get_ipython())
    

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

    【讨论】:

      猜你喜欢
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2016-05-17
      • 2016-03-07
      相关资源
      最近更新 更多