本文實例講述了Python實現(xiàn)Tab自動補全和歷史命令管理的方法。分享給大家供大家參考。具體分析如下:
Python的startup文件,即環(huán)境變量 PYTHONSTARTUP 對應(yīng)的文件
1. 為readline添加tab鍵自動補全的功能
2. 像Shell一樣管理歷史命令
代碼如下:
import readline
import atexit
import os
# http://stackoverflow.com/questions/7116038/python-tab-completion-mac-osx-10-7-lion
if 'libedit' in readline.__doc__:
readline.parse_and_bind('bind ^I rl_complete')
else:
readline.parse_and_bind('tab: complete')
histfile = os.path.join(os.environ['HOME'], '.pyhist')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del readline, rlcompleter, histfile, os
希望本文所述對大家的Python程序設(shè)計有所幫助。
一。這個方法可以修改shell命令行的自動補全
1.獲取python目錄【我使用的是64位ubuntu系統(tǒng)】
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[~$]python Python 2.7 . 3 (default, Apr 10 2013 , 06 : 20 : 15 ) [GCC 4.6 . 3 ] on linux2 Type "help" , "copyright" , "credits" or "license" for more information. >>> import sys >>> sys.path [' ', ' / usr / lib / python2. 7 ', ' / usr / lib / python2. 7 / plat - linux2 ', ' / usr / lib / python2. 7 / lib - tk ', ' / usr / lib / python2. 7 / lib - old', '/usr/lib/python2.7/lib-dynload' , '/usr/local/lib/python2.7/dist-packages' , '/usr/lib/python2.7/dist-packages' , '/usr/lib/python2.7/dist-packages/PIL' , '/usr/lib/python2.7/dist-packages/gst-0.10' , '/usr/lib/python2.7/dist-packages/gtk-2.0' , '/usr/lib/python2.7/dist-packages/ubuntu-sso-client' , '/usr/lib/python2.7/dist-packages/ubuntuone-client' , '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel' , '/usr/lib/python2.7/dist-packages/ubuntuone-couch' , '/usr/lib/python2.7/dist-packages/ubuntuone-installer' , '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol' ] >>> |
從上面看出python在我電腦上的路徑是 /usr/lib/python2.7
2.切換至該目錄寫個startup.py的腳本,腳本目錄就是處理python中<tab>事件,腳本內(nèi)容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#!/usr/bin/python # python startup file import sys import readline import rlcompleter import atexit import os # tab completion readline.parse_and_bind( 'tab: complete' ) # history file histfile = os.path.join(os.environ[ 'HOME' ], '.pythonhistory' ) try : readline.read_history_file(histfile) except IOError: pass atexit.register(readline.write_history_file, histfile) del os, histfile, readline, rlcompleter |
3.切換至自己主目錄
[/usr/lib/python2.7$]cd
[~$]vi .bashrc
4. 增加環(huán)境變量
#for python
export PYTHONSTARTUP=/usr/lib/python2.7/startup.py
5.配置環(huán)境變量生效
[~$]source .bashrc
PYTHONSTARTUP是什么東西呢?
If this is the name of a readable file, the Python commands in that file are executed before the first prompt
is displayed in interactive mode. The file is executed in the same name space where interactive commands are
executed so that objects defined or imported in it can be used without qualification in the interactive session.
You can also change the prompts sys.ps1 and sys.ps2 in this file.
二。這個方法能在VIM中自動補全
1. 下載插件:
2.拷貝致相應(yīng)的目錄
unzip pydiction-1.2.1.zip
cp python_pydiction.vim /usr/share/vim/vim73/ftplugin
mkdir /usr/share/vim/vim73/pydiction
cp complete-dict /usr/share/vim/vim73/pydiction/
cp pydiction.py /usr/share/vim/vim73/pydiction/
3.修改vim配置文件
let g:pydiction_location = '/usr/share/vim/vim73/pydiction/complete-dict'
let g:pydiction_menu_height = 20
OK,測試是否生效吧