vim 的 tags 模块 与 ctags

1. 概述

一般来说,在代码中跳转,离不开 ctags。

实际上,vim 中代码跳转是由 vim tags 模块完成的,tags 模块依赖于 tags 文件。

ctags(Generate tag files for source code) 是产生 tags 文件的。

tags 文件只包含了函数、类、变量的定义的信息,而没有包含使用信息。

如果要知道一个函数都在什么地方使用过,需要使用 cscope。

2. tags 文件的生成与更新

ctags 默认是不会自动生成 ctags 文件的,常用的 3 个生成命令如下:

$ ctags *
$ ctags -R
$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
  • -R: 循环生成子目录的 tags
  • *: 当前目录下的所有文件,不递归
  • –c++-kinds=+px : 记录 c++ 文件中的函数声明和各种外部和前向声明
  • –fields=+iaS : ctags 要求描述的信息,其中i表示如果有继承,则标识出父类;a 表示如果元素是类成员的话,要标明其调用权限(即是 public 还是 private);S 表示如果是函数,则标识函数的 signature。
  • –extra=+q: 强制要求ctags做如下操作—如果某个语法元素是类的一个成员,ctags默认会给其记录一行,可以要求ctags对同一个语法元素再记一行,这样可以保证在VIM中多个同名函数可以通过路径不同来区分。

3. 常见功能与快捷键

详细的说明,见 vim 的 tags 帮助文档。

:help tags

命令、快捷键、功能描述如下:

  • CTRL+]        :tag tagname     跳转到定义处
  • CTRL-W ]     :stag tagname    新窗口中打开并跳转到定义处。split 后执行  tag tagname
  • CTRL+T                               CTRL+] 的反操作,向回跳转。类似 CTRL+o,区别在于,CTRL+o 的跳转不局限于 CTRL+] 构成的调用树。

对于存在多个匹配的 tag(如, 在 .h 和  .cpp 中都声明或者定义的方法名):

  • :ts[elect]                 列出所有匹配的 tag
  • :[count]tp[revious]  跳转至前 count 个 tag 处。
  • :[count]tn[ext]        跳转至后 count 个 tag 处。

4. Vim + ctags 配置

set tags=tags;  # ; 不可省略,表示若当前目录中不存在tags, 则在父目录中寻找。
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR> 

vim 的 tags 模块 与 ctags,布布扣,bubuko.com

时间: 2025-01-12 02:03:41

vim 的 tags 模块 与 ctags的相关文章

VIM+ctags+cscope用法

使用vim + cscope/ctags,就能够实现Source Insight的功能,可以很方便地查看分析源代码. 关键词: vim, cscope, ctags, tags 1. 查看vim是否支持cscope $ vim --version | grep cscope 2. 编译支持cscope的VIM(--enable-cscope) # USE="bash-completion cscope nls perl python -acl -gpm -minimal -ruby -vim-p

vim+ctags+cscope工具

最近在看一个开源的项目,突然发现在Linux上不知道有什么方便的工具来看开源代码.以前,在Windows上用VS2010集成开发环境,对于任意一个函数直接有快捷键跳转到函数定义处.可现在在Linux上束手无策.然后,开始在网上找资料,才知道linux上有ctags的神器,唉..伤心,到底是菜鸟,连这些常用的工具都不知道,尚需努力啊!这里先记录学习下... 一.插件介绍 大部分unix系统都有ctags,它能跟vim很好地合作.ctags工具主要是用来遍历源代码文件生成tags文件,这些tags文

一起talk Vim吧(第十五回:Vim插件之ctags)

各位看官们,大家好,欢迎大家一起来听大型章回体科技小说 :Vim.上一回咱们介绍了Vim插件中的配 置文件.这一回,咱们继续说Vim的插件.这一回我们要说的Vim插件叫:ctags.好了,还是那句话, 闲话休提,言归正转.让我们一起talk Vim吧! 看官们,咱们这回说的是Vim中的插件:ctags.ctags是一个工具,或者说一个应用软件.它可以通过插件 的形式运行在Vim中."什么是ctags呢",看官问的,正是我要说的,ctags主要用来生成带有tags标签 的文件,我们可以通

[转]Linux下阅读源代码:(g)vim+Taglist+ctags

Linux下阅读源代码的方法很多,聪明人从标题应该就可以知道,需要(g)vim+Taglist+ctags.3者配合,真是珠联璧合,功力无限啊! vim/gvim什么是vim/gvim,如果看官连vi都不知道,那就别往下看了.一些对Linux一知半解的人说,vi不就是一个和Win下的note pad一样的工具吗?其实大错特错了,如果仅仅是和note pad一样的功能,那它早就不叫vi了. TaglistTaglist是一个vim的源代码浏览插件,具体功能介绍还烦请各位看官自己google一下.很

创作gtk源码级vim帮助文档 tags

创作gtk源码级vim帮助文档 tags 缘由 那只有看到源码了.在linux源码上有个网站 http://lxr.linux.no /+trees, 可以很方面的查出相应版本的代码实现,gtk没有.那么就自己动手做一个. 我一直用vim,就想到了 ctags + vim + gtk3 相对应的源码包制作一个源码级帮助文档. 源码包准备 工作目录:/root/gtk/src 在官方下载页面 (http://www.gtk.org/download/index.php) 选取下载链接,存入文档pa

vim下使用ctags+taglist

好几年前用过,但是后来就生疏了,好其次都没法鼓起勇气再捡起来...今天不得不用,那既然捡起来了,就好好的记录一下. 简介及安装 ctags是一个应用程序,可以用它来生产当前目录下所有c文件中变量和函数的索引,索引信息将存储在当前文件夹下的tags文件中.ctags官方地址:http://ctags.sourceforge.net/ taglist是vim的一个插件,主要设计用来使用ctags产生的tags信息,我们可以在vim中直接追踪我们的变量或者函数的定义.地址:http://www.vim

(转)Vim的Python编辑器详细配置过程 (Based on Ubuntu 12.04 LTS)

为什么要用vim编辑py文件? 因为在Linux命令行中,缺少图形界面的IDE,vim是最佳的文本编辑器,而为了更好的编辑py文本,所以配置vim. 1. 安装完整版vim vi和vim的区别? 在Linux自带有vi编辑器,而vim是指vi improved,即vi升级版.区别在于vi指令和功能较vim简单,正因如此才有了vi improved. Ubuntu自带的vi编辑器是vim.tiny,也就是vim最基本功能,几乎等同于vi.而在Ubuntu中vi命令指向的是vim. 如何使用apt安

简单将vim改造成IDE

公司服务器上的vim用的异常痛苦,自己写几个小脚本又不想用IDE,于是简单改造下vim,尝试了一次以后发现公司的机器装的是vim6x,很多插件不支持,于是干脆重装成7.x 1.安装vim 先去下载vim安装包,然后解压,执行安装命令,一般有 ./configure --prefix=/usr/local/ 安装目录 --enable-perlinterp perl集成 --enable-pythoninter ppython集成 --enable-cscope csope支持 --enable-

[转载] 像 IDE 一样使用 vim

原文: https://github.com/yangyangwithgnu/use_vim_as_ide 看了这篇文章要是再不会用vim就不能怪我了. 所需即所获:像 IDE 一样使用 vim [email protected]2015-02-15 13:30:59 谢谢 捐赠:支付宝 [email protected] .支付宝链接https://shenghuo.alipay.com/send/payment/[email protected] ,支付宝二维码 $_$ 二手书:书,我提高开