在IPython 7.0.1中打破了多行编辑

shb*_*shb 4 python shell ipython

我在zsh shell中使用IPython并且我在定义具有多行的函数时遇到了麻烦.

例如,在原始的Python shell中,我可以像这样定义一个函数f:

>>> def f(x):
...     a = x + 1
...     return a
... 
>>>
Run Code Online (Sandbox Code Playgroud)

当我在IPython中完成它时,当'a = x + 1'行结束时,defination立即结束.它看起来像这样:

In [4]: def f(x): 
   ...:     a = x + 1                                                                                                                              

In [5]:   
Run Code Online (Sandbox Code Playgroud)

如何通过更改某些配置或安装其他版本的IPy来修复它?

我的Python和IPython版本:

Python 3.5.6 |Anaconda, Inc.|  
Type 'copyright', 'credits' or 'license' for more information
IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help.
Run Code Online (Sandbox Code Playgroud)

gbo*_*ffi 6

这是一个已知的错误(另见这个).

从我引用的问题中可以清楚地看出,这不是Anaconda发行版的一个错误,而是一些漏入IPython 7.0版本的内容.

Matthias Bussonier建议使用C-o(即Control o)作为止损措施. C-o在当前行下方打开新的空行,您可以使用箭头键进行访问和编辑 - 这不是一个非常令人满意的解决方案,但目前没有其他解决方案(当然,除了将IPython降级到6.x之外).

最后,用于C-o打开新行并等待错误修复或降级到IPython 6.x.


附加信息

卡洛斯·科尔多瓦的Spyder的维护者之一,评论到我的回答说,也qtconsole被此问题的影响?

此外,在IPython 7.1 shell中修复的bug仍然存在于同一版本中,qtconsole并且我提到的止损措施(Ctrl-o在当前版本下面打开一行)不起作用qtconsole.