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
投稿

猜你喜欢

  • pandas中的series数据类型详解

    2023-11-30 20:30:30
  • python多进程程序打包成exe的问题

    2023-08-07 13:39:03
  • python自动化测试三部曲之request+django实现接口测试

    2023-07-11 05:12:00
  • 43个应当避免的Web设计错误

    2007-09-30 12:57:00
  • Vue中强制组件重新渲染的正确方法

    2024-05-03 15:11:13
  • SqlServer使用公用表表达式(CTE)实现无限级树形构建

    2024-01-22 00:34:09
  • 使用Numpy打乱数组或打乱矩阵行

    2022-09-18 09:40:10
  • python:目标检测模型预测准确度计算方式(基于IoU)

    2023-04-17 08:51:19
  • 关于利用:first-letter实现首字下沉的一些看法

    2010-04-20 17:19:00
  • 微信跳一跳游戏python脚本

    2022-03-31 02:24:27
  • python写入文件自动换行问题的方法

    2022-06-13 11:28:18
  • Python利用re模块实现简易分词(tokenization)

    2021-06-12 20:07:59
  • Python实现二维数组按照某行或列排序的方法【numpy lexsort】

    2022-03-13 05:06:31
  • MySQL表复合查询的实现

    2024-01-15 19:49:20
  • python数组中的 k-diff 数对例题解析

    2022-03-30 18:21:47
  • SQL Server序列SEQUENCE用法介绍

    2024-01-21 02:43:21
  • Python编程super应用场景及示例解析

    2023-06-10 03:00:46
  • 浅谈Python 函数式编程

    2022-09-03 20:38:07
  • 10分钟搞定让你困惑的 Jenkins 环境变量过程详解

    2023-09-23 13:56:03
  • 中国传统色彩名录

    2007-11-29 18:36:00
  • asp之家 网络编程 m.aspxhome.com