更改IPython魔术函数前缀(从'%'到':'),无论如何?

时间:2013-01-01 09:35:50

标签: ipython

有没有办法从默认'%'更改IPython魔术函数前缀?我在ipython_config.py

中找不到任何选项

由于我正在使用vim和ghci,我(不知何故)训练自己考虑':'作为命令前缀。

当我想调用魔术函数并自动为每个IPython魔术函数调用前缀':'时,这非常烦人,例如:cd,:ed和:load

1 个答案:

答案 0 :(得分:5)

魔法逃脱在很多地方都是硬编码的, 但如果你想要做的就是尽量减少你的肌肉造成的肌肉记忆的惩罚, 你可以告诉inputsplitter将你的冒号视为百分比:

import re
from IPython.core import splitinput
from IPython.core.inputsplitter import transform_escaped

# this is a one-character change, adding colon to the second group,
# so the line splitter will interpret ':' as an escape char
splitinput.line_split = line_split = re.compile("""
             ^(\s*)               # any leading space
             ([,;/%:]|!!?|\?\??)?  # escape character or characters
             \s*(%{0,2}[\w\.\*]*)     # function/method, possibly with leading %
                                  # to correctly treat things like '?%magic'
             (.*?$|$)             # rest of line
             """, re.VERBOSE)

# treat colon the same as percent:
transform_escaped.tr[':'] = transform_escaped._tr_magic

现在,您应该可以执行以下操作:

:cd foo

for t in range(3):
    :time time.sleep(t)

如果您希望始终触发,可以将此代码放在IPython启动文件中(〜/ .ipython / profile_default / startup / whatever.py)。

这些并不完全是公共API,因此我不相信它们不会搞砸任何东西,但它似乎适用于当前的大师。