【问题标题】:How to rename a magic function in IPython?如何在 IPython 中重命名魔术函数?
【发布时间】:2013-02-05 20:16:19
【问题描述】:

我想将%paste 重命名为%pp 之类的名称,以减少击键次数。我想出了一种方法来做到这一点,但它似乎很复杂。有没有更好的办法?

def foo(self, bar):
    get_ipython().magic("paste")

get_ipython().define_magic('pp', foo)

【问题讨论】:

标签: python ipython


【解决方案1】:

从 IPython 0.13 开始,有一个新的 %alias_magic 魔术函数,您可以将其用作:

%alias_magic pp paste

【讨论】:

  • 如果我退出 IPython 并重新启动它,我会丢失别名。你知道让别名在 IPython 会话中持续存在的方法吗?
  • 你可以把它放在启动脚本中:ipython.readthedocs.io/en/stable/interactive/…
  • 问题是“%alias_magic pp paste”不是有效的python语法。这会导致启动 ipython 时出现语法错误:echo "%alias_magic pp paste" > ~/.ipython/profile_default/startup/paste_alias.py
  • get_ipython().magics_manager().register_alias('pp', 'paste') 应该这样做。您还可以在启动文件中使用魔法,方法是给它一个 .ipy 扩展名。
  • 太好了,谢谢!仅供参考,我得到了“不可调用的魔法经理”并将其更改为可以工作:get_ipython().magics_manager.register_alias('pp', 'paste')
【解决方案2】:

使用%alias 魔法来做到这一点(如果你想永久使用%store):

In [8]: %alias??

"""Define an alias for a system command.

   '%alias alias_name cmd' defines 'alias_name' as an alias for 'cmd'
   ... 

【讨论】:

  • 不幸的是,我认为这只适用于系统命令,不适用于 IPython 魔术命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多