Sau đây không phải là việc của riêng tôi, nhưng thẳng thắn mà nói tôi không nhớ nơi tôi mới vào nghề nó ... Tuy nhiên: đặt tệp sau (trên hệ thống GNU/Linux) vào thư mục chính của bạn (tên của tệp phải là .pystartup.py
):
# Add auto-completion and a stored history file of commands to your Python
# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
# bound to the Esc key by default (you can change it - see readline docs).
#
# Store the file in ~/.pystartup, and set an environment variable to point
# to it, e.g. "export PYTHONSTARTUP=/max/home/itamar/.pystartup" in bash.
#
# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the
# full path to your home directory.
import atexit
import os
import readline
import rlcompleter
historyPath = os.path.expanduser("~/.pyhistory")
historyTmp = os.path.expanduser("~/.pyhisttmp.py")
endMarkerStr= "# # # histDUMP # # #"
saveMacro= "import readline; readline.write_history_file('"+historyTmp+"'); \
print '####>>>>>>>>>>'; print ''.join(filter(lambda lineP: \
not lineP.strip().endswith('"+endMarkerStr+"'), \
open('"+historyTmp+"').readlines())[-50:])+'####<<<<<<<<<<'"+endMarkerStr
readline.parse_and_bind('tab: complete')
readline.parse_and_bind('\C-w: "'+saveMacro+'"')
def save_history(historyPath=historyPath, endMarkerStr=endMarkerStr):
import readline
readline.write_history_file(historyPath)
# Now filter out those line containing the saveMacro
lines= filter(lambda lineP, endMarkerStr=endMarkerStr:
not lineP.strip().endswith(endMarkerStr), open(historyPath).readlines())
open(historyPath, 'w+').write(''.join(lines))
if os.path.exists(historyPath):
readline.read_history_file(historyPath)
atexit.register(save_history)
del os, atexit, readline, rlcompleter, save_history, historyPath
del historyTmp, endMarkerStr, saveMacro
Sau đó, bạn sẽ nhận được tất cả các tiện ích đi kèm với bash shell (mũi tên lên và xuống điều hướng lịch sử, ctrl-r để tìm kiếm ngược, v.v ...).
Lịch sử lệnh đầy đủ của bạn sẽ được lưu trữ trong một tệp có tại: ~/.pyhistory
.
Tôi đang sử dụng tính năng này từ độ tuổi và tôi chưa bao giờ gặp sự cố.
HTH!
Sao chép và dán có vấn đề gì? Bạn có thể sử dụng tìm/thay thế đơn giản để sửa chữa '>>>'. Nó sẽ không đơn giản nhất sao? –
Sao chép/dán ba mươi dòng đầu vào một vài lần mỗi ngày trở nên tẻ nhạt ... –