Python實(shí)現(xiàn)Tab自動(dòng)補(bǔ)全和歷史命令管理的方法
本文實(shí)例講述了Python實(shí)現(xiàn)Tab自動(dòng)補(bǔ)全和歷史命令管理的方法。分享給大家供大家參考。具體分析如下:
Python的startup文件,即環(huán)境變量 PYTHONSTARTUP 對(duì)應(yīng)的文件
1. 為readline添加tab鍵自動(dòng)補(bǔ)全的功能
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
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
一。這個(gè)方法可以修改shell命令行的自動(dòng)補(bǔ)全
1.獲取python目錄【我使用的是64位ubuntu系統(tǒng)】
[~$]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.切換至該目錄寫個(gè)startup.py的腳本,腳本目錄就是處理python中<tab>事件,腳本內(nèi)容如下
#!/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.
二。這個(gè)方法能在VIM中自動(dòng)補(bǔ)全
1. 下載插件:
下載地址:http://www.fzitv.net/softs/305586.html
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,測(cè)試是否生效吧
相關(guān)文章
Tornado源碼分析之HTTP服務(wù)請(qǐng)求解析
這篇文章主要為大家介紹了Tornado源碼分析之HTTP服務(wù)請(qǐng)求解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
pyqt5數(shù)據(jù)庫使用詳細(xì)教程(打包解決方案)
這篇文章主要介紹了pyqt5數(shù)據(jù)庫使用教程(打包解決方案),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
詳解Python2.x中對(duì)Unicode編碼的使用
這篇文章主要介紹了詳解Python2.x中對(duì)Unicode編碼的使用,Python3中Unicode被作為默認(rèn)的編碼來使用,而在目前仍被廣泛應(yīng)用的Python2的版本中Unicode卻是一個(gè)在使用中需要注意的地方,需要的朋友可以參考下2015-04-04
用Python進(jìn)行一些簡(jiǎn)單的自然語言處理的教程
這篇文章主要介紹了用Python進(jìn)行一些簡(jiǎn)單的自然語言處理的教程,主要用到了pandas和collections庫,需要的朋友可以參考下2015-03-03
Python 保持登錄狀態(tài)進(jìn)行接口測(cè)試的方法示例
這篇文章主要介紹了Python 保持登錄狀態(tài)進(jìn)行接口測(cè)試的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-08-08

