本文实例讲述了Python实现Tab自动补全和历史命令管理的方法。分享给大家供大家参考。具体分析如下:
Python的startup文件,即环境变量 PYTHONSTARTUP 对应的文件
1. 为readline添加tab键自动补全的功能
2. 像Shell一样管理历史命令
代码如下:
import rlcompleter<br />import readline<br />import atexit<br />import os<br /># http://stackoverflow.com/questions/7116038/python-tab-completion-mac-osx-10-7-lion<br />if 'libedit' in readline.__doc__:<br /> readline.parse_and_bind('bind ^I rl_complete')<br />else:<br /> readline.parse_and_bind('tab: complete')<br />histfile = os.path.join(os.environ['HOME'], '.pyhist')<br />try:<br /> readline.read_history_file(histfile)<br />except IOError:<br /> pass<br />atexit.register(readline.write_history_file, histfile)<br />del readline, rlcompleter, histfile, os
希望本文所述对大家的Python程序设计有所帮助。
一。这个方法可以修改shell命令行的自动补全
1.获取python目录【我使用的是64位ubuntu系统】
[~$]pythonPython 2.7.3 (default, Apr 10 2013, 06:20:15) [GCC 4.6.3] on linux2Type "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中事件,脚本内容如下
#!/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.切换至自己主目录
<br />[/usr/lib/python2.7$]cd <br />[~$]vi .bashrc <br />
4. 增加环境变量
<br />#for python<br />export PYTHONSTARTUP=/usr/lib/python2.7/startup.py<br />
5.配置环境变量生效
<br />[~$]source .bashrc <br />
PYTHONSTARTUP是什么东西呢?
<br />If this is the name of a readable file, the Python commands in that file are executed before the first pro<span style="color:transparent">来1源gaodai#ma#com搞*代#码1网</span>mpt <br />is displayed in interactive mode. The file is executed in the same name space where interactive commands are<br />executed so that objects defined or imported in it can be used without qualification in the interactive session. <br />You can also change the prompts sys.ps1 and sys.ps2 in this file.<br />
二。这个方法能在VIM中自动补全
1. 下载插件:
下载地址:http://www.gaodaima.com/softs/305586.html
2.拷贝致相应的目录
<br />unzip pydiction-1.2.1.zip<br />cp python_pydiction.vim /usr/share/vim/vim73/ftplugin<br />mkdir /usr/share/vim/vim73/pydiction<br />cp complete-dict /usr/share/vim/vim73/pydiction/<br />cp pydiction.py /usr/share/vim/vim73/pydiction/<br />
3.修改vim配置文件
<br /> let g:pydiction_location = '/usr/share/vim/vim73/pydiction/complete-dict'<br />let g:pydiction_menu_height = 20<br />
OK,测试是否生效吧