在vim中使用ctags

  vim可以使用ctags制作的tags文件来浏览程序源文件,可以定位函数、变量、宏定义等,便于开发人员管理项目代码。

  熟练的使用 ctags 仅需记住下面七条命令:

  1.$ ctags –R *

  2.$ vi –t tag (请把tag替换为您欲查找的变量或函数名)

  3.:ts (ts 助记字:tags list, “:”开头的命令为VI中命令行模式命令)

  4.:tp (tp 助记字:tags preview)—此命令不常用,可以不用记

  5.:tn (tn 助记字:tags next) —此命令不常用,可以不用记

  6.Ctrl + ]

  7.Ctrl + t

  1 安装

  到http://sourceforge.net/projects/ctags/files/ctags/5.8/ctags-5.8.tar.gz/download下载,解压并安装

  tar zxvf ctags-5.8.tar.gz

  cd ctags-5.8

  ./configure && make && make install

  下面安装插件

  mkdir ~/.vim

  cd ~/.vim

  unzip /usr/src/cvim.zip

  2 编辑 vim 配置文件 .vimrc

  添加: 

  set tags=tags;

  set autochdir

  filetype plugin on

  注意,第一个命令里的分号是必不可少的。这个命令让 vim 首先在当前目录里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目录中查找,一直向上递归。因为 tags 文件中记录的路径总是相对于 tags 文件所在的路径,所以要使用第二个设置项来改变 vim 的当前目录。

  如果想直接使用绝对路径,可以这样操作:

  set tags=/home/coder/project/tags

  3 生成 tags 文件

  在程序的根目录里,使用命令:ctags –R

  如:ctags -R *

  其中,“-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此 tags 文件。Tags 文件中包括这些对象的列表:

  用#define定义的宏

  枚举型变量的值

  函数的定义、原型和声明

  名字空间(namespace)

  类型定义(typedefs)

  变量(包括定义和声明)

  类(class)、结构(struct)、枚举类型(enum)和联合(union)

  类、结构和联合中成员变量或函数

  vim 用这个“tags”文件来定位上面这些做了标记的对象。

  4 定位 tag 对象

  使用命令:$ vim –t tag,例如:

  $ vim -t main

  这个命令将打开定义“main”(变量或函数或其它)的文件,并把光标定位到这一行。

  如果这个变量或函数有多处定义,在 vim 命令行模式下,“:ts”命令就能列出一个列表供用户选择,“:tp”为上一个 tag 标记文件,“:tn”为下一个tag标记文件。当然,若当前tags文件中用户所查找的变量或函数名只有一个,“:tp,:tn”命令不可用。

  最方便的方法是把光标移到变量名或函数名上,然后按下“Ctrl+]”,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行。用“Ctrl+t”可以退回原来的地方。即使用户使用了N次“Ctrl+]”查找了N个变量,按N次“Ctrl+t”也能回到最初打开的文件,它会按原路返回 。

  注意,运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:settags=”命令设定“tags”文件的路径,这样vim才能找到“tags”文件。在完成编码时,可以手工删掉tags文件。

  5 在函数中移动光标

  [{ 转到上一个位于第一列的”{“

  }] 转到下一个位于第一列的”{“

  { 转到上一个空行

  } 转到下一个空行

  gd 转到当前光标所指的局部变量的定义

  shift + * 转到当前光标所指的单词下一次出现的地方

  shift + # 转到当前光标所指的单词上一次出现的地方

  更多详细用法可以参考http://www.thegeekstuff.com/2009/01/tutorial-make-vim-as-your-cc-ide-using-cvim-plugin/

发表评论

电子邮件地址不会被公开。 必填项已用*标注