2

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

4

1 回答 1

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 时自动运行。

于 2013-08-26T18:53:28.017 回答