python - 为新样式 ipython (v5) 提示添加颜色

标签 python python-3.x ipython

今天更新到新发布的 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/

相关文章:

python - 在python中逐行连接大量文件

python-3.x - 如何点击复选框?甚至 aria-hidden 也是= true?

python - IPython 5.0 : Remove spaces between input lines

python - 文件执行错误 - 没有名为 'pywinauto' 的模块

python - 如何按名称获取 QListWidget 项目?

python - 为什么 Simple String 的 Character 有这么多数组维度?

python - 如何在 Python IDE : Spyder? 中缩进代码块

python - ipyparallel 异常 : "You have attempted to connect to an IPython Cluster but no Controller could be found"

python - 为什么PIL不能修改灰度BMP图像数据?

python - mainwindow.close() 期间的信号