Python实现Tab自动补全和历史命令管理的方法

作者:redraiment 时间:2022-06-16 10:12:46 

本文实例讲述了Python实现Tab自动补全和历史命令管理的方法。分享给大家供大家参考。具体分析如下:

Python的startup文件,即环境变量 PYTHONSTARTUP 对应的文件

1. 为readline添加tab键自动补全的功能

2. 像Shell一样管理历史命令

代码如下:

import rlcompleter
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程序设计有所帮助。

一。这个方法可以修改shell命令行的自动补全
1.获取python目录【我使用的是64位ubuntu系统】


[~$]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>事件,脚本内容如下


#!/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. 增加环境变量


#for python
export PYTHONSTARTUP=/usr/lib/python2.7/startup.py

5.配置环境变量生效


[~$]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. 下载插件:
       下载地址:https://www.jb51.net/softs/305586.html

   2.拷贝致相应的目录


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,测试是否生效吧

标签:Python,Tab,补全,方法
0
投稿

猜你喜欢

  • XML教程 WEB页面工具语言XML的定义

    2008-05-29 10:54:00
  • python神经网络Pytorch中Tensorboard函数使用

    2021-03-30 04:27:01
  • 标志设计如何正确使用字体

    2009-02-16 15:41:00
  • python中数组和列表的简单实例

    2021-04-15 20:04:42
  • PHP中Too few arguments to function的问题及解决

    2023-06-04 21:15:55
  • pymssql ntext字段调用问题解决方法

    2022-04-22 06:55:06
  • Python实现partial改变方法默认参数

    2022-10-30 20:23:33
  • Python中logging日志模块代码调试过程详解

    2021-03-13 05:40:32
  • tensorflow 1.0用CNN进行图像分类

    2022-08-17 17:32:29
  • 发一个数字拼图网页游戏

    2008-10-12 10:02:00
  • 面向对象的CSS

    2009-07-03 12:23:00
  • 给展示性图片增加提示工具条(黑白效果)

    2007-10-20 14:21:00
  • 一个简单的ASP生成HTML分页程序

    2009-07-05 18:32:00
  • pygame游戏之旅 添加游戏界面按键图形

    2023-06-30 21:48:38
  • 再谈Python中的字符串与字符编码(推荐)

    2023-06-15 23:25:08
  • SQL Server 2005如何设置多字段做关键字

    2009-01-08 15:57:00
  • 一文秒懂python中的 \\r 与 end=‘’ 巧妙用法

    2022-10-06 08:33:28
  • 如何才能有效对抗MySQL数据库的解密高手

    2009-05-22 18:21:00
  • ASP.NET(C#)读取Excel的文件内容

    2023-07-10 22:38:35
  • 网页HTTP header头信息详解

    2010-03-31 14:42:00
  • asp之家 网络编程 m.aspxhome.com