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

 更新时间:2015年03月12日 09:31:17   作者:redraiment  
这篇文章主要介绍了Python实现Tab自动补全和历史命令管理的方法,实例分析了tab自动补全的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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 Flask 装饰器顺序问题解决

    python Flask 装饰器顺序问题解决

    这篇文章主要介绍了python Flask 装饰器顺序问题解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 进行数据处理的6个 Python 代码块分享

    进行数据处理的6个 Python 代码块分享

    这篇文章主要介绍了进行数据处理6个Python代码块的分享,分享内容有选取有空值的行、快速替换列值、对列进行分区、将一列分为多列等内容,需要的朋友可以参考一下
    2022-04-04
  • Python AES加密模块用法分析

    Python AES加密模块用法分析

    这篇文章主要介绍了Python AES加密模块用法,结合具体实例形式分析了AES加密模块的相关使用技巧与注意事项,需要的朋友可以参考下
    2017-05-05
  • python Pillow图像处理方法汇总

    python Pillow图像处理方法汇总

    这篇文章主要介绍了python Pillow图像处理方法汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 跟老齐学Python之编写类之四再论继承

    跟老齐学Python之编写类之四再论继承

    本打算上篇文章就结束这个系列的,考虑了下,还是得加一章,算是对上一讲的进一步修改吧
    2014-10-10
  • Python代码实现粒子群算法图文详解

    Python代码实现粒子群算法图文详解

    这篇文章主要介绍了Python编程实现粒子群算法详解,涉及粒子群算法的原理,过程,以及实现代码示例,具有一定参考价值,需要的朋友可以了解下
    2021-08-08
  • pandas改变df列的顺序的方法实现

    pandas改变df列的顺序的方法实现

    本文主要介绍了pandas改变df列的顺序的方法实现,主要使用 Pandas 中的 reindex() 方法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • 用Python操作字符串之rindex()方法的使用

    用Python操作字符串之rindex()方法的使用

    这篇文章主要介绍了用Python操作字符串之rindex()方法的使用,是Python入门的基础知识,需要的朋友可以参考下
    2015-05-05
  • python3模拟实现xshell远程执行linux命令的方法

    python3模拟实现xshell远程执行linux命令的方法

    今天小编就为大家分享一篇python3模拟实现xshell远程执行linux命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • TensorFlow的权值更新方法

    TensorFlow的权值更新方法

    今天小编就为大家分享一篇TensorFlow的权值更新方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论