vim插件ctags的安装和使用
linux编程(9)
c/c++编程(11) 
版权声明:本文为博主原创文章,未经博主允许不得转载。
【ctags功能】:
为源码的变量/对象、结构体/类、函数/接口、宏等产生索引文件,以便快速定位。目前支持41种语言,这里仅以C/C++为例:ctags可以产生c/c++语言所有类型的索引文件,具体如下:
- -> class names(类名)
- -> macro definitions(宏定义)
- -> enumeration names(枚举名)
- -> enumerators(枚举变量)
- -> function definitions(函数定义)
- -> function prototypes/declarations(函数定义/声明)
- -> class, interface, struct, and union data members(类,接口,结构体,联合体)
- -> structure names(结构体名)
- -> typedefs(别名)
- -> union names(联合体名)
- -> variables (definitions and external declarations)变量
【ctags的安装】
1)在线安装:
sudo apt-get install ctags (ubuntu)
(RedHat系列使用:yum install ctags)
若不成功,可能是因为源的问题,换一下软件源update后重新执行上述命令即可。
2)手动下载安装:
下载地址
Official site: http://ctags.sourceforge.net/
VIM online: http://www.vim.org/scripts/script.php?script_id=610
参考步骤(以5.8版本ctags-5.8.tar.gz为例)
解压后
$ cd ctags-5.8
$ ./configure
$ make
# make install
安装结束后,使用ctags命令测试是否成功
或whatis ctags, whereis ctags等
【生成tags文件】
安装成功后,要为源码文件生成tags文件,才可享受ctags为阅读代码带来的便利。
$ ctags -R
递归的为当前目录及子目录下的所有代码文件生成tags文件
为某些源码生成tags文件,使用如下命令
$ ctags filename.c filename1.c file.h
或
$ ctags *.c *.h
为了使得字段补全有效,在生成tags时需要一些额外的参数,推荐的c++参数主要是:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
其中:
选项c++-kinds 用于指定C++语言的 tags记录类型, --c-kinds用于指定c语言的, 通用格式是 --{language}-kinds
选项 fileds 用于指定每条标记的扩展字段域
extra 选项用于增加额外的条目: f表示为每个文件增加一个条目, q为每个类增加一个条目
【使用方法】
在vim打开源码时,指定tags文件,才可正常使用,通常手动指定,在vim命令行输入:
:set tags=./tags(当前路径下的tags文件)
若要引用多个不同目录的tags文件,可以用逗号隔开
或者,设置 ~/.vimrc,加入一行,则不用手动设置tags路径:
set tags=~/path/tags
若要加入系统函数或全局变量的tag标签,则需执行:
ctags -I __THROW –file-scope=yes –langmap=c:+.h –languages=c,c++ –links=yes –c-kinds=+p --fields=+S -R -f ~/.vim/systags /usr/include /usr/local/include
并且在~/.vimrc中添加(亦可用上面描述的手动加入的方式):
set tags+=~/.vim/systags
这样,便可以享受系统库函数名补全、原型预览等功能了。
如果经常在不同工程里查阅代码,那么可以在~/.vimrc中添加:
set tags=tags;
set autochdir
设置好了tags文件,在定位变量/函数的定义时,最常用的快捷键是:
Ctrl + ]
跳转到变量或函数的定义处,或者用命令
:ta name
而使用快捷组合键
Ctrl + o/t
返回到跳转前的位置。
另外,ctags不会生成局部变量的索引,不过可以使用gd组合键(对光标所在处的word进行快捷查找定位)来定位,也是相当快捷的。
$ vim -t myAdd
用vim打开文件时,添加参数-t funcName会自动打开定义该函数的文件并定位到定义首行,上面这句就是找到myAdd定义的文件打开并将光标置于定义的第一行处。
:tags
会列出查找/跳转过程(经过的标签列表)
另外,附上vim环境中其他较为好用的快捷键:
* 定位至当前光光标所指单词的下一次出现的地方
# 定位至当前光光标所指单词的上一次出现的地方
n 定位至跳至已被标记出的单词下一次出现的地方
shift+n 定位至跳至已被标记出的单词上一次出现的地方
关于更详细的ctags用法,vim中使用
:help tags
vim插件ctags的安装和使用的更多相关文章
- vim插件ctags的安装和使用【转】
本文转载自:http://blog.csdn.net/g_brightboy/article/details/16830395 [ctags功能]: 为源码的变量/对象.结构体/类.函数/接口.宏等产 ...
- vim插件ctags的安装与使用
LINUX系统下看程序或者编程序时,看到一个函数经常需要知道该函数的定义,这时ctags就派上用场了,其安装和使用方法如下: 安装方法: sudo apt-get install ctags (ubu ...
- 【转】ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装
原文网址:http://www.cnblogs.com/jostree/p/4137402.html 作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree ...
- ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4137402.html 1.需要保证vim的版本大于7.3.584,否则的话需要更新vim 可 ...
- 使用VIM插件ctags来阅读C代码
说明 Ctags是vim下方便代码阅读的工具.尽管ctags也可以支持其它编辑器,但是它正式支持的只有vim.并且vim中已经默认安装ctags,它可以帮助程序员很容易地浏览源代码:ctags最先是用 ...
- Vim插件YCM的安装
YouCompleteMe(YCM)是一款非常好用的Vim插件,但是很多人安装的时候会出问题(尤其是涉及到C和C++的补全),我安装的时候也遇到了问题,现在解决了,给大家参考: Step1: 通过Vu ...
- vim 插件 -- ctags
vim ctags 插件实现代码跳转的功能.希望在一个项目中快速的找到函数,变量,宏等定义的地方. 下载 http://ctags.sourceforge.net/ 安装 tar -jxvf ctag ...
- vim 中Ctags的安装和使用
Ctags是一个用来为源文件中的标识符(如变量.函数.类成员.宏定义等)创建索引文件的程序.这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名 ...
- Eclipse的vim插件viPlugin的安装
1.viPlugin是什么? viPlugin是一个eclipse 针对vi的插件,使用此插件可以让你在使用eclipse进行编码时使用几乎所有vi命令,可以极大的提高开发编码效率. 2.viPl ...
随机推荐
- sql中的xml使用
SQL openxml用法 使用sp_xml_preparedocument处理XML文档(原文:http://www.cnblogs.com/oec2003/archive/2011/07/23/2 ...
- php发送http put/patch/delete请求
今天学RESTful API的编写,发现不知道怎么发送HTTP PUT/PATCH/DELETE请求,还是要学习一个. 使用curl_opt函数来发送各式各样的http请求动作,不仅限于get和pos ...
- 【UOJ#33】【UR#2】树上GCD 有根树点分治 + 容斥原理 + 分块
#33. [UR #2]树上GCD 有一棵$n$个结点的有根树$T$.结点编号为$1…n$,其中根结点为$1$. 树上每条边的长度为$1$.我们用$d(x,y)$表示结点$x,y$在树上的距离,$LC ...
- 【poj1177】 Picture
http://poj.org/problem?id=1177 (题目链接) 题意 求矩形周长并. Solution 转自:http://www.cnblogs.com/Booble/archive/2 ...
- 【poj1061】 青蛙的约会
http://poj.org/problem?id=1061 (题目链接) 题意 两只青蛙在周长为L的球上沿一条直线向一个方向跳,每只每次分别跳m,n米,它们一开始分别在X,Y处,问跳几次两青蛙可以在 ...
- 【poj2774】 Long Long Message
http://poj.org/problem?id=2774 (题目链接) 题意 给出两个只包含小写字母的字符串,求出最长连续公共子串. solution 第一次用后缀数组,感觉有点神...才发现原来 ...
- Bzoj1001 [BeiJing2006]狼抓兔子
Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 19759 Solved: 4883 Description 现在小朋友们最喜欢的"喜羊羊与 ...
- C#调试方法
单步执行 有三种, 一种是每次执行一行(F10): 一种是每次执行一行,但遇到函数调用就会跳到被调用的函数里(F11): 一种是直接执行当前函数里剩下的指令,返回上一级函数(Shift+F11). 还 ...
- RabbitMQ代码第一步
Hello RabbitMQ 终于到了使用.Net连接RabbitMQ的时候了,我们首先新建一个控制台应用程序,在程序包管理控制器中NuGet中下载 RabbitMQ. Install-Package ...
- 电影发烧友必备知识-720P、1080P、4K的区别
随着技术的进步,现在的影视作品的清晰度也越来越高,观众的体验也越来越好,普清的电影基本没人看了,尤其是影视爱好者现在都是看1080P或蓝光原盘.4K. 目前主流清晰度主要分为720P(高清).1080 ...