vim编辑器python开发_VIM编辑器支持Python开发环境(Vim+Ctags+Taglist)

在Linux下用VI编辑器进行Python开发,有必要对VI编辑器进行一些配置,使其具备以下特性:

1、加强的 Python 语法高亮显示;

2、对脚本、项目生成 ctag 序列;

3、在 vim 中显示 ctag 序列列表;

4、 Python 函数、类的自动补全;

5、Python 代码自动折叠;

一、准备

本文以 CentOS 5.6 为例对系统默认自带的 vim 进行配置。在开始之前需要确认系统已经安装了以下 RPM 包:vim-enhanced、ctags。

1. 配置 vim alias,使 vim 成为默认的 vi 编辑器:

# echo alias vi=\'vim\' >> ~/.bashrc

# source ~/.bashrc

2. 复制默认的 .vimrc 初始化文件:# cp /usr/share/vim/vim70/vimrc_example.vim  ~/.vimrc# vi ~/.vimrc

编辑用户VI环境,添加如下配置:

set tabstop=4

set softtabstop=4

set shiftwidth=4

set expandtab

set autoindent

set foldmethod=indent

这样,我们就完成了对 vim 的一些前期准备。下面开始进行 vim Python IDE 环境的配置。

二、Python IDE 环境配置

1. 加强 Python 语法高亮显示

下载增强的 Python 语法高亮脚本最新版本:http://www.vim.org/scripts/script.php?script_id=790下载后得到 python.vim。# mv /usr/share/vim/vim70/syntax/python.vim  /usr/share/vim/vim70/syntax/python.vim.ori

# cp python.vim  /usr/share/vim/vim70/syntax/

2. 对脚本/项目生成 ctag  序列

进入到 python 程序脚本(项目)所在的目录,在该目录下执行:# ctag -R *

会在当前目录下自动生成一个 ctags 文件,该文件记录了程序/项目的函数、类等的分析序列记录。有关 ctag 的详细用法请阅读 ctag 的 manpage。

3. 在 vim 中显示 ctag 序列列表

下载 taglist 插件:http://www.vim.org/scripts/script.php?script_id=273下载后得到 taglist_45.zip。

# unzip taglist_45.zip

解压后得到两个文件:plugin/taglist.vim(taglist 插件)、doc/taglist.txt(taglist 帮助文件)# cp plugin/taglist.vim  /usr/share/vim/vim70/plugin/

# cp doc/taglist.txt  /usr/share/vim/vim70/doc/

# vi

启动一个 vi 编辑器,并输入以下命令:

:helptags  /usr/share/vim/vim70/doc    #"生成 taglist 帮助文件列表

:help  taglist.txt    #"查看 taglist 帮助信息

为了更方便的使用 tablist,我们还可以在 vim 中做一些设置:

# vi ~/.vimrc

添加如下指令:

let Tlist_Show_One_File = 1            #"不同时显示多个文件的tag,只显示当前文件的。

let Tlist_Exit_OnlyWindow = 1          #"如果 taglist 窗口是最后一个窗口,则退出 vim。

let Tlist_Use_Right_Window = 1         #"在右侧窗口中显示 taglist 窗口。

当编辑程序代码文件时,可以在 vi 中输入 :Tlist 来启动 taglist 窗口。

下面是一些 .vimrc 中有关 taglist 的配置参数:

let Tlist_Auto_Open=1    #"在启动 vim 后,自动打开 taglist 窗口。

let Tlist_File_Fold_Auto_Close=1

#"taglist 只显示当前文件 tag,其它文件的tag折叠。

在 taglist 窗口中,可以使用以下操作指令:: 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样

o: 在一个新打开的窗口中显示光标下tag

: 显示光标下tag的原型定义

u: 更新taglist窗口中的tag

s: 更改排序方式,在按名字排序和按出现顺序排序间切换

x: taglist窗口放大和缩小,方便查看较长的tag

+: 打开一个折叠,同 zo

-: 将tag折叠起来,同 zc

*: 打开所有的折叠,同 zR

=: 将所有 tag 折叠起来,同 zM

[[: 跳到前一个文件

]]: 跳到后一个文件

q: 关闭 taglist 窗口

: 显示帮助

4. Python 函数、类的自动补全

CentOS 5.6 自带的 vim7.0 已经支持了 PHP、Python、Ruby 等多种语言的自动补全,只需进行开启即可。

开启 Python 自动补全支持:# echo 'autocmd FileType python set omnifunc=pythoncomplete#Complete' >> ~/.vimrc

这样,当编写 python 脚本时,使用 + x    + o 即可打开自动补全菜单,在顶部,还有对应的说明帮助信息 (docstring)。

vim 自带的 pythoncomplete.vim 虽然很方便,还支持 docstring,但是有时并不能方便的列出一些函数的自动补全。所以,懒人可以继续安装 Pydiction 插件:# unzip  pydiction-1.2.zip

# cp python_pydiction.vim  /usr/share/vim/vim70/ftplugin

# mkdir  /usr/share/vim/vim70/pydiction

# cp complete-dict  pydiction.py  /usr/share/vim/vim72/pydiction/

# vi ~/.vimrc

增加如下两行:

let g:pydiction_location = '/usr/share/vim/vim70/pydiction/complete-dict'

let g:pydiction_menu_height = 20

打开 python 脚本文件,在编写 python 程序时,按 TAB 键即可激活自动补全菜单。

5. Python 代码自动折叠

下载 python_fold 插件:http://www.vim.org/scripts/script.php?script_id=515下载后得到 python_fold.vim。# cp python_fold.vim  /usr/share/vim/vim70/plugin/

# vi ~/.vimrc

添加:

set foldmethod=indent

这样,再编辑 python 文件时会发现代码已经作了折叠处理。下面是有关折叠的一些命令:zo: 打开光标位置的折叠代码;

zc: 折叠光标位置的代码;

zr: 将文件中所有折叠的代码打开;

zm: 将文件中所有打开的代码折叠;

zR: 作用和 zr 类似,但会打开子折叠(折叠中的折叠);

zM: 作用和 zm 类似,但会关闭子折叠;

zi: 折叠与打开操作之间的切换命令;

1.taglist

注意:taglist依赖于ctags,所以要先装ctags,否则taglist装了也没法用!

(1)将taglist_45.zip解压得到的两个文件夹:doc和plugin 放到 ~/.vim文件夹里面,如果主目录下没有这个隐藏的文件夹,就建一个。

(2)

plugin/taglist.vim – taglist插件

doc/taglist.txt - taglist帮助文件

(3)常用快捷键

ctrl+ww    在列表和源文件中切换

ctrl + ]     查看函数定义

ctrl + o     返回上一级文件。

gf             查看头文件

gd        转到当前光标所指的局部变量的定义处。

*        转到当前光标所在单词的下一次出现的地方。

#        转到当前光标所在的单词的上一次出现的地方。

          跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样

o             在一个新打开的窗口中显示光标下tag

       显示光标下tag的原型定义

u             更新taglist窗口中的tag

s             更改排序方式,在按名字排序和按出现顺序排序间切换

x             taglist窗口放大和缩小,方便查看较长的tag

+             打开一个折叠,同zoctags常用快捷键ctags常用快捷键

-             将tag折叠起来,同zc

*             打开所有的折叠,同zR

=             将所有tag折叠起来,同zM

[[            跳到前一个文件

]]            跳到后一个文件

q             关闭taglist窗口

taglist 窗口ENTER

2.ctags

(1)安装ctags : sudo apt-get install ctags

(2)使用

ctags -R      对当前目录下的文件递归产生tags文件。

ctags file.c

(3)在.vimrc文件中添加配置

:TlistToggle 或 :Tlist     显示函数列表

在.vimrc文件中加上键盘映射

map :Tlist

这样我就可以使用快捷键F8直接进入tlist模式了。这里注意和 : 之间有空格的。

在.vimrc下加入一下两行

set tags=tags;

set autochdir

这样使用tags时可以首先在当前目录下查找tags文件,如果没有则转到父目录查找。依次向上。

查看帮助文件

:help helptags

:help taglist.txt

3.cscope

(1)仔细阅读了cscope的手册后发现,原来cscope在产生索引文件时,只搜索类型为 C, lex和yacc的文件(后缀名为.c, .h, .l, .y),

C++的文件根本没有生成索引。不过按照手册上的说明,cscope支持c++和Java语言的文件。

于是按照cscope手册上提供的方法,先产生一个文件列表,然后让cscope为这个列表中的每个文件都生成索引。

为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件:

#!/bin/sh

find  . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files

cscope  -bkq -i cscope.files

ctags  -R

-R : 在生成索引文件时,搜索子目录树中的代码

-b : 只生成索引文件,不进入cscope的界面

-k : 在生成索引文件时,不搜索 / usr / include目录

-q : 生成cscope . in . out和cscope . po . out文件,加快cscope的索引速度

将这个脚本保存到/usr/local/bin/cscopes.sh,以后就可以在源代码目录下使用sudo bash cscope.sh命令直接生成索引拉!

(2)cscope常用快捷键:

先按 ctrl+\ 然后

c: 查找该函数被调用的位置

d: 查找该函数调用了哪些函数

e: 查找指定的正规表达式 f: 查找指定的文件

g: 查找指定标识符的定义位置

i: 查找该文件在哪些地方被包含

s: 查找指定标识符的使用位置

附:Python开发(配置Ctag+Taglist后)的用户环境示例

let g:pydiction_location = '/usr/share/vim/vim72/pydiction/complete-dict'                                                           set tabstop=4

set softtabstop=4

set shiftwidth=4

set expandtab

set autoindent

set foldmethod=indent

let Tlist_Auto_Highlight_Tag=1

let Tlist_Auto_Open=1

let Tlist_Auto_Update=1

let Tlist_Display_Tag_Scope=1

let Tlist_Exit_OnlyWindow=1

let Tlist_Enable_Dold_Column=1

let Tlist_File_Fold_Auto_Close=1

let Tlist_Show_One_File=1

let Tlist_Use_Right_Window=1

let Tlist_Use_SingleClick=1

nnoremap :TlistToggle

filetype plugin on

autocmd FileType python set omnifunc=pythoncomplete#Complete

autocmd FileType javascrīpt set omnifunc=javascriptcomplete#CompleteJS                                                   autocmd FileType html set omnifunc=htmlcomplete#CompleteTags

autocmd FileType css set omnifunc=csscomplete#CompleteCSS

autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags

autocmd FileType php set omnifunc=phpcomplete#CompletePHP

autocmd FileType c set omnifunc=ccomplete#Complete

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值