保留ipython';s在自定义提示中过滤输入提示

保留ipython';s在自定义提示中过滤输入提示,ipython,prompt,Ipython,Prompt,如中所述,ipython足够聪明,可以自动从粘贴的代码行中删除默认提示——非常方便。我根据自己的喜好定制了提示,不幸的是,这似乎打破了这种逻辑。是否可以调整我的启动文件中的模式匹配逻辑以反映自定义提示,如果可以,如何调整?如果您使用的是最新的IPython(1.0或开发版本),那么可以,尽管我们并不特别支持它(即API将来可能会更改)。定义一个与您的提示相匹配的正则表达式,就像这个用于经典Python提示的正则表达式:re.compile(r'^(>>?| \.\.\.\.\?)) 然后您将需要

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

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

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

从IPython.core.inputtransformer导入CoroutineInputTransformer,\u strip\u提示
@同轴输入变压器包
def my_prompt():
prompt\u re=re.compile(r'foo')
返回\u条带\u提示(提示\u re)
ip=get_ipython()
ip.input\u splitter.physical\u line\u transforms.insert(0,my\u prompt())
ip.input\u transformer\u manager.physical\u line\u transforms.insert(0,my\u prompt())

你可以把它放在一个启动文件(
IPYTHONDIR/profile\u default/startup/prompts.py
)中,让它在你启动IPython时自动运行。

谢谢,一旦发行版给我,我将使用这个IPython版本。我现在使用的是0.12.1/0.13.2,其中inputtransformer不可用,所以我无法对其进行测试。在这些版本中,这可能是可行的,但它要灵活得多。我为1.0修改了输入转换系统