ctags 的最简单使用
vim插件ctags的安装和使用
版权声明:本文为博主原创文章,未经博主允许不得转载。
【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
ctags 的最简单使用相关推荐
- VIM中ctags的简单使用教程
关于ctags的安装及配置等,请参考 Vim:打造Linux程序员的编辑利器(ctags+cscope+taglist+code_complete). 下面是关于ctags的几个常用快捷键. 注意: ...
- 【转】使用 vim + ctags + cscope + taglist 阅读源码
原文网址:http://my.oschina.net/u/554995/blog/59927 最近,准备跟学长一起往 linux kernel 的门里瞧瞧里面的世界,虽然我们知道门就在那,但我们还得找 ...
- 王垠:我和Google的故事
也许有人看见过我批判 Google 的那篇英文文章.它好像有一部分片面性,所以被我从英文博客上拿下来了.我一直在反思自己在 Google 的经历,因为在这个公司工作总是感觉不对劲,但是却总也说不清楚为 ...
- 王垠 我和Google的故事
也许有人看见过我批判 Google 的那篇英文文章(Hacker News 上的讨论).它好像有一部分片面性,所以被我从英文博客上拿下来了.我一直在反思自己在 Google 的经历,因为在这个公司工作 ...
- vim+cscope+ctags打造属于自己的IDE
所谓工欲善其事,必先利其器.作为专业码农,特别是长期在Unix系统上展开工作(查看源代码.coding)的码农,没有一个极致的IDE环境,工作效率会很受影响的.当然啥时候Unix系统如果有Visual ...
- win7系统中给GVim 配置ctags和taglist插件
Vim安装ctags和taglist插件 通过ctags建立索引,可以用其浏览代码. 通过taglist可以在窗口中直接看到源代码的结构. ctags的安装 这个安装非常简单,在http://ctag ...
- 使用Vim+Ctags+Cscope阅读源代码
2019独角兽企业重金招聘Python工程师标准>>> 因为所有设计思想.内部机制都是 以代码的形式实现,所有的资料也都是为了更好的诠释代码.那么一个好的阅读工具,能 够提高阅读的效 ...
- vim无法打中文_vim+ctags+cscope+Taglist+Nerdtree打造成sourceinsight
听说vi很强大?是的,最近笔者需要在Linux下编写一些C代码和查看一些C源码,但是默认的vi并不支持函数之间的跳转.查看函数的定义等等,所以笔者就将vi打造成了一个ide(可以勉强称得上吧).首先我 ...
- ctags,cscope,nerdtree,tmux 笔记
打造一个基础的VIMer需要配备的环境,开不开ctags, cscope(需求不大的时候也可以忽略), nerdtree,tmux.下面整理一下我的配置过程,以备不时之需. ctags相关 首先肯定是 ...
最新文章
- 文件批量重命名的技术,你值得拥有
- python基础考核试题及答案
- 怎么进入mysql workspace_MySQL 继续-- Win7 安装及后续工作
- 图像处理之基础---周末戏说卷积
- 小程序订单点击不同页面_小程序跳转页面参数丢失
- 2 resize 到指定大小_阿里巴巴为什么让初始化集合时必须指定大小?
- 剑指Offer #01 二维数组中的查找(Java描述)
- sql group by having用法_神奇的 SQL 为什么 GROUP BY 之后不能直接引用原表中的列?...
- 【学习笔记】观察者模式
- 爬虫 404 try_和我一起学爬虫
- python代码可以内嵌在asp文件中_在IE中使用Python作为开发脚本(转)
- 循环队列的介绍与实现
- docker-ovs遇到的问题以及解决办法
- 7-7 旅游规划 (25 分)
- 为什么阿里规定需要在事务注解@Transactional中指定rollbackFor
- 全国快递物流查询公司mysql数据库语句
- html英语单词不换行,css如何设置英文单词不换行?
- iReport简单使用
- 【转载】TextView源码解析
- 入网许可证_进网许可证、电信设备入网许可证详解!
热门文章
- 磁珠 符号_磁珠的主要功能是什么
- python百分号字符串_python--003--百分号字符串拼接、format
- python pyecharts 折线图_Python数据可视化之pyecharts实现各种图表
- c++常引用做参数可以有默认参数吗_最新Pandas.read_excel()全参数详解(案例实操,如何利用python导入excel)...
- vue 拷贝 数组_vue源码中值得学习的方法
- 阿里云服务器安装docker开发环境
- 华为手机坏了数据怎么导出_更换手机怎么把旧手机便签里的内容怎么全部导出到电脑...
- python open 函数漏洞_Python系列之——编写已知漏洞exp实现批量getshell
- 北美+德国18所名校数据科学课程汇总
- centos mysql lujin_MySQL中文转换成拼音的函数[zt]