निम्नलिखित अपने ही काम नहीं है, लेकिन स्पष्ट रूप से मुझे याद नहीं है, जहां मैं पहली बार मिला यह ... हालांकि: अपने घर फ़ोल्डर में फ़ाइल (नाम जीएनयू/लिनक्स सिस्टम पर) रखें (फ़ाइल का नाम .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
तब आप सभी उपहारों को प्राप्त करेंगे जो बैश खोल के साथ आते हैं (इतिहास को नेविगेट करने वाले ऊपर और नीचे तीर, रिवर्स सर्च आदि के लिए ctrl-r ....)।
आपका पूरा आदेश इतिहास: ~/.pyhistory
पर स्थित फ़ाइल में संग्रहीत किया जाएगा।
मैं इसे उम्र से उपयोग कर रहा हूं और मुझे कोई समस्या नहीं मिली।
एचटीएच!
कॉपी और पेस्ट के साथ क्या गलत है? आप '>>>' को ठीक करने के लिए सरल खोज/प्रतिस्थापन का उपयोग कर सकते हैं। क्या यह सबसे आसान नहीं होगा? –
इनपुट की तीस पंक्तियों को प्रतिलिपि/पेस्ट करना दिन में कुछ बार थकाऊ हो जाता है ... –