从 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
...:
没有前面的三点和双冒号有什么方法可以复制它们吗?
附:我在上下文菜单中尝试了Copy
和Copy 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
以获取最新的输入行。 (这对于grep
ing 会话历史等也很有用)。您还可以通过管道将其输入xclip
!
【讨论】:
【参考方案4】:我倾向于为这类事情保持一个打开的 gvim 窗口。按原样粘贴您的类定义,然后执行以下操作:
:%s/^.*\.://
【讨论】:
【参考方案5】:这对你来说可能太迂回了,但你可以使用 %save 魔法函数来保存有问题的行,然后从保存文件中复制它们。
【讨论】:
以上是关于从 IPython 复制代码,不带前导三点的主要内容,如果未能解决你的问题,请参考以下文章