vim插件ctags的安装和使用

2013-11-19 20:47 17064人阅读 评论(0) 收藏 举报
 分类:
开发工具(3)  linux编程(9)  c/c++编程(11) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

【ctags功能】:

为源码的变量/对象、结构体/类、函数/接口、宏等产生索引文件,以便快速定位。目前支持41种语言,这里仅以C/C++为例:ctags可以产生c/c++语言所有类型的索引文件,具体如下:

[plain] view plaincopy
  1. -> class names(类名)
  2. -> macro definitions(宏定义)
  3. -> enumeration names(枚举名)
  4. -> enumerators(枚举变量)
  5. -> function definitions(函数定义)
  6. -> function prototypes/declarations(函数定义/声明)
  7. -> class, interface, struct, and union data members(类,接口,结构体,联合体)
  8. -> structure names(结构体名)
  9. -> typedefs(别名)
  10. -> union names(联合体名)
  11. -> 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

转载于:https://www.cnblogs.com/the-tops/p/5580493.html

vim插件ctags的安装和使用相关推荐

  1. 日常生活小技巧 -- vim 中 ctags 的安装和使用

    ctags 主要是用来创建 Vim 可以使用的 tag 索引文件的. 一.下载安装 Ubuntu下 执行 sudo apt-get install ctags 二.建立索引文件 在你想要建立索引文件的 ...

  2. 玩转vim之vim插件Ctags

    2012-11-09玩转vim之vim插件Ctags Ctags插件 插件介绍 Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来 快速查找定位源代码中的符号 ...

  3. 【转】ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装

    原文网址:http://www.cnblogs.com/jostree/p/4137402.html 作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree ...

  4. Vim 插件YouCompleteMe(YCM)安装

    vim插件YouCompleteMe插件安装: 在ubuntu 18.04默认的vim版本是8.0,PluginInstall之后报不支持当前vim版本,所以在github上下载vim8.2的源码进行 ...

  5. Eclipse的vim插件viPlugin的安装

    1.viPlugin是什么?    viPlugin是一个eclipse 针对vi的插件,使用此插件可以让你在使用eclipse进行编码时使用几乎所有vi命令,可以极大的提高开发编码效率.   2.v ...

  6. vim ctags java源码_如何使用vim的插件Ctags查看Linux源码

    一.ubuntu下安装Linux内核源码 (1).查看自己的内核版本 (2).查看源内的内核源码类表 (3).下载源码 (4).进入/usr/src (5).解压下载的文件到用户主 二.安装vim插件 ...

  7. vim的使用以及vim插件的配置

    目录 vim简介 vim工作模式 光标移动 文件插入操作 文本删除 文本复制,剪切与粘贴 文本修改与替换 文本查找与替换 修改的撤销,重做与保存 编辑多个文件 分页与折叠栏 多窗口操作 vim配置与v ...

  8. Ubuntu 14.04 配置vim插件教程

    Ubuntu 14.04 vim插件配置教程 (最终配置成适配C/C++语言编程的IDE) 注:本系统采用ubuntu-14.04.3-desktop-amd64.iso镜像生成的虚拟机,以下步骤中的 ...

  9. 如何在 Linux 上使用 Vundle 管理 Vim 插件

    毋庸置疑,Vim 是一款强大的文本文件处理的通用工具,能够管理系统配置文件和编写代码.通过插件,Vim 可以被拓展出不同层次的功能.通常,所有的插件和附属的配置文件都会存放在 ~/.vim 目录中.由 ...

  10. Mac 中 vim 插件配置 —— 以YouCompleteMe 为例

    文章目录 以 YouCompleteMe 为例 初始配置环境 编译 可能遇到的问题 举一反三 后记 博主最新在准备学习 vim 的使用,今天主要在观看一些视频,并记录如何在 MAC 中一点点配置自己的 ...

最新文章

  1. linux查看cpu监控日志,Linux:日志,cpu,memory,mount,load等系统信息查看
  2. LightOJ-1028 Trailing Zeroes (I)---因子数目
  3. C++ 基本的输入输出
  4. 【转载】进程间的通信之剪贴板方法实现源码
  5. 反射矩阵(reflection matrix)推导
  6. HTML CSS 响应式-菜单
  7. dropdownlist三级联动怎么实现_简单三步,轻松搞定一级、二级、三级下拉菜单
  8. 如何真正学好数据科学?
  9. poj 2195(KM求最小权匹配)
  10. 单片机小车关于PWM控速
  11. 1寸、2寸、小2寸的照片尺寸是多少
  12. STM32开发(14)----CubeMX配置ADC
  13. vue做移动端适配最佳解决方案,亲测有效
  14. iPhone怎么设置代理ip
  15. JAVA方法SQL语句执行顺序
  16. MybatisPlus 分页排序封装
  17. matlab中simple函数怎么用,matlab里simple函数
  18. 广工大物实验报告十七——铁磁材料的磁滞回线和基本磁化曲线
  19. C - 鬼吹灯之龙岭迷窟
  20. mybatis第五话 - mybatis情同手足的插件之TypeHandler和Interceptor

热门文章

  1. java 小程序--杨辉三角
  2. mongoDB's Optimization example
  3. xcode 把cocos2d-x 以源码的形式包含进自己的项目适合, 性能分析问题的错误
  4. AAA 及 RADIUS/HWTACACS 协议配置
  5. 详解谷歌官方教程 Android插件ADT 9.0.0
  6. PHP设计模式——门面模式
  7. 谈天津地铁之为民服务
  8. myBatis-plus异常提示For input string: {0=null}
  9. Java工具-----native2ascii
  10. dubbo 分布式服务框架 介绍