tôi sử dụng các mẹo tiêu chuẩn để tùy biến phiên Python tương tác:Nhìn cách sửa chữa tính cột bằng Python readline nếu nhắc sử dụng màu sắc
$ cat ~/.bashrc export PYTHONSTARTUP=~/.pystartup $ cat ~/.pystartup import os import sys import atexit import readline import rlcompleter historyPath = os.path.expanduser("~/.pyhistory") def save_history(historyPath=historyPath): import readline readline.write_history_file(historyPath) if os.path.exists(historyPath): readline.read_history_file(historyPath) term_with_colors = ['xterm', 'xterm-color', 'xterm-256color', 'linux', 'screen', 'screen-256color', 'screen-bce'] if os.environ.get('TERM') in term_with_colors: green='\033[32m' red='\033[31m' reset='\033[0m' sys.ps1 = red + '>>> ' + reset sys.ps2 = green + '... ' + reset del term_with_colors atexit.register(save_history) del os, sys, atexit, readline, rlcompleter, save_history, historyPath
Bây giờ tôi có được hoàn bối cảnh nhạy cảm và kịp thời màu sắc.
Vấn đề đến từ dấu nhắc màu - khi tôi gọi lịch sử tìm kiếm-backward (bằng cách nhấn UP) trong phiên Python tương tác Readline mất trong chuỗi thoát terminal acount, vì vậy vị trí con trỏ đã được tính toán sai và văn bản được hiển thị sai .
Trong trang người đàn ông Bash vấn đề này được đề cập và cố định bởi các dấu hiệu đặc biệt:
\[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt \] end a sequence of non-printing characters
Làm thế nào để khắc phục vấn đề này trong Python nhắc?
+1. bpython là điều tuyệt vời! Làm thế nào về django **./Manage.py ** console? Giải pháp của tôi cũng cho phép hoàn thành trong phiên tương tác django, làm thế nào để sử dụng bpython cho mục đích này? – gavenkoa
@gavenkoa Nhìn vào [core.managment.commands.shell] (https://code.djangoproject.com/browser/django/trunk/django/core/management/commands/shell.py), tôi thấy rằng nếu 'ipython 'không thành công,' bpython' được sử dụng. Nếu bạn đã cài đặt xong, bạn vẫn có thể chỉnh sửa tập tin đó và sắp xếp lại thuộc tính lớp 'shells' để' bpython' được thử trước 'ipython'. – jcollado
Cảm ơn bạn đã chia sẻ knowladge – gavenkoa