Python开发环境配置 Vim + Ctags+ TagList
在 Linux 下对 vim 进行一些配置,使之支持如下特性:
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
可以添加一些配置:
|
|
这样,我们就完成了对 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 编辑器,并输入以下命令:
|
|
为了更方便的使用 tablist,我们还可以在 vim 中做一些设置:
# vi ~/.vimrc
添加如下指令:
|
|
当编辑程序代码文件时,可以在 vi 中输入 :Tlist 来启动 taglist 窗口。
下面是一些 .vimrc 中有关 taglist 的配置参数:
|
|
在 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 插件:
下载 Pydiction 插件:http://www.vim.org/scripts/script.php?script_id=850 下载后得到 pydiction-1.2.zip。
# 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/vim70/pydiction/
# vi ~/.vimrc
增加如下两行:
|
|
打开 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
添加:
|
|
这样,再编辑 python 文件时会发现代码已经作了折叠处理。下面是有关折叠的一些命令:
zo: 打开光标位置的折叠代码;
zc: 折叠光标位置的代码;
zr: 将文件中所有折叠的代码打开;
zm: 将文件中所有打开的代码折叠;
zR: 作用和 zr 类似,但会打开子折叠(折叠中的折叠);
zM: 作用和 zm 类似,但会关闭子折叠;
zi: 折叠与打开操作之间的切换命令;
taglist用法
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 转到当前光标所指的局部变量的定义处。
* 转到当前光标所在单词的下一次出现的地方。
# 转到当前光标所在的单词的上一次出现的地方。
<CR> 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o 在一个新打开的窗口中显示光标下tag
<Space> 显示光标下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 <F8> :Tlist<CR>
这样我就可以使用快捷键F8直接进入tlist模式了。这里注意<F8>和 : 之间有空格的。
在.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: 查找指定标识符的使用位置
转载于:https://my.oschina.net/alphajay/blog/70673
Python开发环境配置 Vim + Ctags+ TagList相关推荐
- python开发环境配置以及其简单的运行方式
python开发环境配置 1.开发环境的安装 到python主页上选择下载自己所需要的python版本,以下是其链接 python主页. 点击下载,选择系统(这里演示wondows系统)如下图: 选择 ...
- Eclipse python 开发环境配置
Eclipse python 开发环境配置 由于项目需要用到脚本配置的东西,看了看Python能够做到基本上需要的工作,选择了 2.7.3稳定版本来进行测试开发. 转自: Eclipse+python ...
- 1.2 Python开发环境配置 | Python语言程序设计(嵩天)
文章目录 课程简介 第一章 Python基本语法 1.2 Python开发环境配置 Python语言概述 Python开发环境IDLE python的安装与环境配置 Python基本开发环境 Pyth ...
- vim配置python开发环境_VIM插件管理及python开发环境配置
这是在公司做的一个分享,目的是帮助新手快速的配置好python开发环境.在操作之前,建议先把你自己的vim配置文件(vimrc)和.vim文件夹先剪切到一个备份文件中. 上ppt(囧,blog地址写错 ...
- python开发环境配置config_manjaro与python开发环境配置
1.manjaro配置 1.1.启动项 sudo update-grub 注:Manjaro(archLinux)系统时间快8小时--> sudo timedatectl set-local-r ...
- Macbook Pro M1芯片Python开发环境配置
文章主要介绍M1 Mac新机器如何进行开发环境配置,由于在进行开发环境配置的时候,需要经常使用终端,而且新机器是没有配置homebrew的,后面一些操作不是很方便,所以本文将会对日常终端使用方面进行一 ...
- python开发环境配置_百度资讯搜索_python开发环境配置
金生水起程序猿 2020年11月14日 11:20下载完成后就可以安装Python了,在安装过程中会弹出内容选择对话框,选中复选框Add Python 3.x to PATH,可以将Python的安装 ...
- 使用Vscode进行Python开发环境配置
Vscode是是一个强大的跨平台工具,我自己电脑是mac,公司电脑是win而且是内部环境,导致公司安装软件很费劲.好在vscode许多插件能直接离线安装,省去了很多麻烦. 很多人学习python,不知 ...
- python编译环境 eclipse_Eclipse python 开发环境配置
由于项目需要用到脚本配置的东西,看了看Python能够做到基本上需要的工作,选择了 2.7.3稳定版本来进行测试开发. 根据电脑的处理器选择32位或64位版本下载.选择"Eclipse Cl ...
- 一文读懂 Python 开发环境配置
文章目录 Python 多版本管理 1. 多版本使用需求 2. Windows 下多版本管理[^1] 3. Linux 系统下多版本管理[^2] Python 虚拟环境配置 1. 原理和配置需求 操作 ...
最新文章
- c+和python先学哪个比较好-C和Python我该先学什么?
- PAT甲级1140 Look-and-say Sequence:[C++题解]统计连续个数
- XMemcached使用示例--转
- java 连接 postgresql_java如何连接数据库并对其操作(以PostgreSQL为例)
- jq动态获取input的值传给html,jquery 保证html()拿到的html字符串包含input的value值
- CF1497E2 Square-free division (hard version)
- java中的module是什么意思_Angular - 组件中module.id的含义是什么?
- LeakCanary上传 leak trace 到服务器
- hadoop -- mapreduce执行过程
- OMP算法的物理意义表示
- WireShark抓包原理解析及抓包实战教程
- Ecshop小京东支付插件【小京东个人支付宝即时到帐支付插件支持PC电脑版+手机版】
- 【小米手机ROOT记录】
- Java中统计耗时的方法
- iphone 打开safari调试
- 2022年危险化学品经营单位主要负责人及危险化学品经营单位主要负责人操作证考试
- 如何监控工程项目进度?
- Unity实现加载文件夹内所有图片并可显示和放大的一种解决方案
- 集合底层源码分析之HashMap《上》(三)
- C语言编写规范之注释
热门文章
- Win8 内置游戏应用更新 中文翻译错误得以修正
- 有道翻译与VS2010滚动栏自动反弹冲突问题
- [转]MS Sql 7105错误
- 火狐浏览器_全球知名度非常高的火狐浏览器,它好在哪呢?
- 分库分表工具:Apache ShardingSphere 5.0.0-alpha 发布
- SQLServer字符串函数
- docker-compose搭建EFK,继上篇使用filebeat+es对日志文件的过滤
- 计算机游戏制作英文要学好吗,有关怎么不沉迷于电脑游戏的英语作文你的同学MICHAEL沉迷于电脑游戏中,影响了学习.作为好朋友,你要怎么帮助他?写一篇80词左右的英语作文....
- 查 oracle 的sid,oracle 查询sid 运行的sql语句
- git gc 的使用