我有一个函数f
,它可以为Python生成PS1提示符,设置如下:
sys.ps1 = f
按照文档中的说明,我最终得到了以下结果:
from IPython.terminal.prompts import Prompts, Token
from IPython import get_ipython
class MyPrompt(Prompts):
def in_prompt_tokens(self, cli=None):
return [(Token, f())]
ipython = get_ipython()
ipython.prompts = MyPrompt(ipython)
然而,这不起作用,因为
f
返回一个带有颜色代码的字符串,python
直接在终端上打印,导致彩色提示,而ipython
则会打印转义字符,从而引发一堆转义代码。我知道我可以重新配置
f
来使用ipython内部的着色方案,但是否有一种方法可以强制它使用shell的颜色代码而不对其进行转义?虽然
f
是一个考虑其环境信息的函数,但这里有一个实现,显示了它在一个情况下的输出(它在内部使用colorama,因此这只是Unix系统上的输出)。def f():
return '\x01\x1b[1m\x1b[33m\x02kavi\x01\x1b[0m\x02 \x01\x1b[38;5;214m\x02/home\x01\x1b[38;5;82m\x02/kavi\x01\x1b[38;5;28m\x02\x01\x1b[0m\x02 \x01\x1b[38;5;38m\x02master\x01\x1b[0m\x02 $ '
f
字符串好吗? - Asav Patel