2016-07-08 14 views
9

Cập nhật lên ipython5 mới phát hành ngay hôm nay. Bắt đầu lên dấu nhắc tương tác và nhận được:Thêm Màu vào phong cách mới ipython (v5) nhắc

/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' 

kéo mạnh ra các thiết lập cấu hình cũ của tôi để tùy chỉnh và tô màu cho quả nhanh chóng và đã đi tìm kiếm những cách thức mới để tùy chỉnh nhanh chóng và tìm thấy nó, rất mát mẻ. Sử dụng phong cách lớp mới từ example code:

class MyPrompt(Prompts): 
    def in_prompt_tokens(self, cli=None): 
     return [(Token, os.getcwd()), 
       (Token.Prompt, ' >>>')] 

Đặt này vào một kịch bản khởi động và nó hoạt động tốt, ngoại trừ nó theo mặc định không tô màu cho dòng Token, các Token.Prompt được làm bằng màu xanh nhạt.

Đã cố gắng sử dụng màu phương pháp cấu hình cũ, (r '{color.Green}') nhưng điều đó không hoạt động ở đây. Bất kỳ con trỏ nào theo hướng đúng sẽ là tuyệt vời.

Cảm ơn!

+0

Tôi thích chỉnh sửa nhiều dòng Ipython mới này. Có thể mất chút thời gian để làm quen với hành vi hoàn thành tab khác nhau. – hpaulj

Trả lời

3
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) 
""" 

Tôi đã thử nghiệm với nhiều lời nhắc khác nhau với tập lệnh này. Nó bao gồm phương thức mặc định in_prompt_tokens, tùy chỉnh ví dụ và một vài lựa chọn thay thế. bắt chước cuối cùng của tôi bash nhắc

73:~/mypy$ 

Trong trông giống như các tuple (Token..., str) đặt màu của chuỗi theo token_type. Token, Token.Prompt, Token.PromptNum là các loại có thể. Hãy xem Token.<tab> để biết thêm (chẳng hạn như OutPrompt(Num)).

IPython/terminal/prompts.py 

Tôi có thể sẽ không sử dụng bất kỳ cái nào trong số này vì tôi thích cặp kết hợp mặc định là In /Out. Bên cạnh đó tôi có thể sử dụng --term-title để hiển thị thư mục trong tiêu đề tab.

+0

Tự động hoàn thành VIM của tôi không làm bất kỳ điều gì cho Mã thông báo. nên tôi tiếp tục. Cố gắng từ các thiết bị đầu cuối ipython chính nó và từ đó nó hoạt động. Điều này đã giúp, cảm ơn một bó. –

+1

Thêm dòng 'c.InteractiveShell.prompts_class = MyPrompt' vào '~/.ipython/profile_default/ipython_config.py' sau phần trên (vì' get_ipython() 'trả về' None'). Nhờ https://newton.cx/~peter/2015/11/extensible-prompts-in-jupyter-console/ – denis

0

đơn giản ví dụ cho thấy làm thế nào để tô màu cho cửa sổ màu đỏ:

from IPython.terminal.prompts import Token 

ipy_config = get_config() 

ipy_config.TerminalInteractiveShell.highlighting_style_overrides = { 
    Token.Prompt: '#ff0000', 
} 

More dụ tiên tiến làm thay đổi màu sắc nhanh chóng theo biến môi trường (hữu ích nếu bạn chơi rất nhiều với dàn/hệ thống live):

# 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 
Các vấn đề liên quan