今天更新到新发布的 ipython5。启动交互提示,收到:
/usr/local/lib/python3.5/site-packages/IPython/core/interactiveshell.py:440: UserWarning: As of IPython 5.0 `PromptManager` config will have no effect and has been replaced by TerminalInteractiveShell.prompts_class
warn('As of IPython 5.0 `PromptManager` config will have no effect'
抽出我的旧配置设置来自定义提示并为其着色,然后继续寻找自定义提示的新方法并找到了它,非常酷。使用了 example code 中的新类样式:
class MyPrompt(Prompts):
def in_prompt_tokens(self, cli=None):
return [(Token, os.getcwd()),
(Token.Prompt, ' >>>')]
将其放入启动脚本中,效果很好,但默认情况下它不会为 Token 行着色,Token.Prompt 变为浅绿色。
尝试使用旧的配置方法颜色,(r'{color.Green}') 但这在这里不起作用。任何指向正确方向的指示都会很棒。
谢谢!
最佳答案
from IPython.terminal.prompts import Prompts, Token
import os
class MyPrompt(Prompts):
def in_prompt_tokens(self, cli=None): # default
return [
(Token.Prompt, 'In ['),
(Token.PromptNum, str(self.shell.execution_count)),
(Token.Prompt, ']: '),
]
def in_prompt_tokens(self, cli=None): # sample
return [(Token, os.getcwd()),
(Token.Prompt, ' >>>')]
def in_prompt_tokens(self, cli=None): # custom
path = os.path.basename(os.getcwd())
return [
(Token.Prompt, '<'),
(Token.PromptNum, '~/'+path),
(Token.Prompt, '>'),
(Token.Prompt, '['),
(Token.PromptNum, str(self.shell.execution_count)),
(Token.Prompt, ']: '),
]
def in_prompt_tokens(self, cli=None): # custom
path = os.path.basename(os.getcwd())
return [
(Token.PromptNum, str(self.shell.execution_count)),
(Token.Prompt, ':'),
(Token.PromptNum, '~/'+path),
(Token.Prompt, '$ '),
]
"""
use:
import myprompt as MP
ip=get_ipython()
ip.prompts=MP.MyPrompt(ip)
"""
我用这个脚本试验了各种提示。它包括默认值 in_prompt_tokens
方法、示例定制和几个备选方案。最后模仿我的bash
提示
73:~/mypy$
在看起来像元组(Token..., str)
根据 token_type
设置字符串的颜色. Token
, Token.Prompt
, Token.PromptNum
是可能的类型。看Token.<tab>
更多(例如 OutPrompt(Num)
)。
IPython/terminal/prompts.py
我可能不会使用其中任何一个,因为我喜欢默认匹配 In /Out
对。此外我可以使用 --term-title
在选项卡标题中显示目录。
关于python - 为新样式 ipython (v5) 提示添加颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38275585/