从 IPython 复制代码,不带前导三点

Posted

技术标签:

【中文标题】从 IPython 复制代码,不带前导三点【英文标题】:Copy code from IPython without leading triple dots 【发布时间】:2014-01-18 10:45:21 【问题描述】:

我正在使用 IPython Qt 控制台,当我从 Ipython 复制代码时,结果如下:

    class notathing(object):
        ...:
        ...:     def __init__(self):
        ...:         pass
        ...:

没有前面的三点和双冒号有什么方法可以复制它们吗?

附:我在上下文菜单中尝试了CopyCopy Raw Text,但它仍然是一样的。操作系统:Debian Linux 7.2 (KDE)。

【问题讨论】:

【参考方案1】:

如何使用%hist n 打印行n(或一系列行)而没有提示(包括行继续),并从中复制? (只需滚动回该行几乎一样好)。

In [1]: def foo():
   ...:     return 1+2
   ...: 

In [6]: %history 1
def foo():
    return 1+2

【讨论】:

就是这样。【参考方案2】:

此 QTconsole 复制回归已修复,请参阅 https://github.com/ipython/ipython/issues/3206 - 我可以确认所需的行为再次出现在 Canopy 1.2 GUI 中的 QtConsole 中,并且我怀疑在 Enthought 的免费用户可安装的 ipython egg 中鸡蛋回购。

【讨论】:

【参考方案3】:

ipython 的一个很酷的功能是session logging。如果启用它,您在会话中输入的代码将记录到文件中。非常好用,一直在用。

为了让事情变得更漂亮,我有一个 shell 别名 ipy_log_cat,它会打印整个文件。您可以执行以下操作:ipy_log_cat | tail 以获取最新的输入行。 (这对于greping 会话历史等也很有用)。您还可以通过管道将其输入xclip

【讨论】:

【参考方案4】:

我倾向于为这类事情保持一个打开的 gvim 窗口。按原样粘贴您的类定义,然后执行以下操作:

:%s/^.*\.://

【讨论】:

【参考方案5】:

这对你来说可能太迂回了,但你可以使用 %save 魔法函数来保存有问题的行,然后从保存文件中复制它们。

【讨论】:

以上是关于从 IPython 复制代码,不带前导三点的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 6.5升级Python和安装IPython

ipython与sublime调用其shell出现的问题

CentOS 6.5升级Python和安装IPython(亲测可用)

按名称排序,不带“the”(和其他复杂代码)

怎么安装Anaconda

在 Google App 脚本、电子表格中添加前导零