在自定义提示中保留ipython的输入提示过滤

时间:2013-08-25 22:42:38

标签: ipython prompt

the manual中所述,ipython非常智能,可以自动从粘贴的代码行中删除默认提示 - 非常方便。我根据自己的喜好定制了我的提示,遗憾的是这似乎打破了这个逻辑。是否可以在我的启动文件中调整模式匹配逻辑以反映自定义提示,如果是,如何?

1 个答案:

答案 0 :(得分:0)

如果你正在使用最新的IPython(1.0或开发版本),那么是的,虽然它不是我们特别支持的东西(即API将来可能会改变)。定义一个与你的提示相匹配的正则表达式 - 就像经典的Python提示一样:re.compile(r'^(>>> ?|\.\.\. ?)')

然后你需要一些这样的代码(未经测试):

from IPython.core.inputtransformer import CoroutineInputTransformer, _strip_prompts

@CoroutineInputTransformer.wrap
def my_prompt():
    prompt_re = re.compile(r'foo')
    return _strip_prompts(prompt_re)

ip = get_ipython()
ip.input_splitter.physical_line_transforms.insert(0, my_prompt())
ip.input_transformer_manager.physical_line_transforms.insert(0, my_prompt())

您可以将它放在启动文件(IPYTHONDIR/profile_default/startup/prompts.py)中,以便在启动IPython时自动运行。