【问题标题】:IPython: Editing %cpaste inputIPython:编辑 %cpaste 输入
【发布时间】:2014-12-21 19:07:05
【问题描述】:

我正在尝试编辑 %cpaste-ed 函数 - 但我找不到用于向上或向下移动一行的键盘快捷键。

附言我知道我可以使用 %edit, %run - 但如果需要进行的更改很小(其中粘贴到 %edit 不会自动删除 >>>... )

Further %ed 无法从块中读取粘贴的文本,即 %paste foo %edit foo 不起作用。

【问题讨论】:

    标签: python shell ipython


    【解决方案1】:

    简短的回答是“你不能”。对不起。

    稍长一点的答案是“Cpaste 将读入并执行 预格式化 文本块。一旦进入,就无法编辑 - 你不是 vim 或 nano工作。

    来自 iPython 文档:

    从剪贴板粘贴并执行预先格式化的代码块。

    您必须使用“-”(两个减号)或 Ctrl-D 终止块 一个人就行。你也可以为你自己的哨兵提供'%paste -s %%'('%%' 是此次操作的新哨兵)。

    块在执行之前被删除以启用方法的执行 定义。行首的‘>’和‘+’字符是 忽略,以允许直接从电子邮件、差异文件和 doctests('...' 继续提示也被剥离)。这 执行的块也分配给名为“pasted_block”的变量 稍后使用“%edit paste_block”进行编辑。

    您也可以将变量名作为参数传递,例如'%cpaste foo'。 这会将粘贴的块作为字符串分配给变量“foo”,没有 删除或执行它(前面的 >>> 和 + 仍然被剥离)

    ‘%cpaste -r’ 重新执行之前由 cpaste 输入的块。 '%cpaste -q' 禁止任何额外的输出消息。

    实际上,我的工作流程很大程度上与the answer to this question 中的描述相同。我在 textwrangler 或 PyCharm 中编辑代码,并使用 %cpaste 在终端中运行它以进行早期调试。这是一个额外的步骤,但现在它似乎是不可避免的。您可能能够将 %capste 包装在 edit-syntax_error() 终端魔法中,但我还没有尝试过。

    terminal magics 在那里完整列出。

    【讨论】:

    • 但是像 %paste foo、%edit foo 这样的东西似乎很奇怪,它不是内置工作流程的一部分。附:我知道我查看了所有终端魔术,并且很惊讶不支持行编辑 - 并且认为我可能遗漏了一些明显的东西(例如在默认的 Julia 交互式控制台中,我可以向上箭头而不是向上/向下箭头先前输入的块的行)。附言你知道为什么人们不赞成这个困惑
    • 我不反对 - 我觉得这有点小题大做,但不幸的是,对于您的回答,这是正确的回答。也许你可以修复它并为它做一个拉取请求?我会用它...
    • TBH,我正在考虑分叉一些更简单的东西 - 老实说,我发现 IPython 界面更令人分心而不是有用(也许我只是习惯了默认的交互式 shell,我的其他抱怨是他们没有'不让 %config 访问颜色,它需要手动编辑 .py 文件)——我真正想要的唯一功能是配置标签长度和行编辑。
    • 如果你只是做%edit,它将创建一个空的临时文件并在文本编辑器中打开它。您可以在其中粘贴代码并进行编辑。当你保存并退出时,IPython 会执行代码。
    【解决方案2】:

    虽然编辑 %cpaste 不起作用,但您可以编辑模块并 reload 它。

    In [1]: import mymodule
    
    In [2]: mymodule.function()
    Out[2]: 'result'
    

    In [3]: reload(mymodule)
    Out[3]: <module 'mymodule' from 'mymodule.py'>
    
    In [4]: mymodule.function()
    Out[4]: 'new result'
    

    缺点是不能使用from mymodule import,因为reload 只接受一个模块作为参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-03
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 2022-07-22
      • 2013-10-31
      • 2012-06-18
      相关资源
      最近更新 更多