立即更新到新发布的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.Prompt会变为浅绿色。
尝试使用旧的配置方法颜色(r' {color.Green}'),但这不起作用。任何正确方向的指针都会很棒。
谢谢!
答案 0 :(得分:5)
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
在标签标题中显示目录。
答案 1 :(得分:2)
显示如何用红色为提示着色的简单示例:
from IPython.terminal.prompts import Token
ipy_config = get_config()
ipy_config.TerminalInteractiveShell.highlighting_style_overrides = {
Token.Prompt: '#ff0000',
}
根据环境变量更改提示颜色的更高级示例(如果您使用登台/实时系统进行大量操作,则非常有用):
# Example showing how to change color of prompt and prompt string in specific environments.
# put into ~/.ipython/profile_${YOURPROFILE}/ipython_config.py and start ipython with:
# PROFILE_LIVE ipython --profile ${YOURPROFILE}
import os
from IPython.terminal.prompts import Prompts, Token
ipy_config = get_config()
class MyPrompt(Prompts):
environment = None
def in_prompt_tokens(self, cli=None):
return [
(Token.Prompt, '{} ['.format(MyPrompt.environment)),
(Token.PromptNum, str(self.shell.execution_count)),
(Token.Prompt, ']: ')
]
if 'PROFILE_LIVE' in os.environ:
ipy_config.TerminalInteractiveShell.highlighting_style_overrides = {
Token.Prompt: '#ff0000',
}
MyPrompt.environment = 'LIVE'
ipy_config.TerminalInteractiveShell.prompts_class = MyPrompt