vim 配合 ctags
安装ctags
【生成tags文件】
安装成功后,要为源码文件生成tags文件,才可享受ctags为阅读代码带来的便利。
$ ctags -R
递归的为当前目录及子目录下的所有代码文件生成tags文件
ctags功能如果要生效,当前的编译目录下必须有tags文件,如果没有 需要在vim命令行下指定
在vim命令行输入:
:set tags=./tags(当前路径下的tags文件)
若要引用多个不同目录的tags文件,可以用逗号隔开
或者,设置 ~/.vimrc,加入一行,则不用手动设置tags路径:
set tags=~/path/tags
如果不想每次都指定tags路径,可以这样操作
然后去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下
运行命令: ctags -R 其中-R表示递归遍历
我现在以 linux-kernel 的源码目录做演示
$ cd ~/ linux-kernel
$ ctags -R (如果是kernel源码的话还可以用 make tags)
此时在/home/ linux-kernel/目录下会生成一个 tags 文件, 现在用vim打开
即输入vim 然后Shift + :
然后再在vim末行运行命令,
: set tags=/home/bob/linux-kernel/tags (最前面的:是提示符,不必输入)
每次都要输入这个才能使tags生效,我很懒,所以把该命令加入到~/.vimrc中, 你也可以将这句话放到~/.vimrc中去,
如果你经常在这个 工程目录编程的话.
再如果你经常在不同工程间编程, 可以在.vimrc中加上:
set tags=tags; " 其中 ; 不能没有
set autochdir
为了使得字段补全有效,在生成tags时需要一些额外的参数,推荐的c++参数主要是:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
其中:
选项c++-kinds 用于指定C++语言的 tags记录类型, --c-kinds用于指定C语言的, 通用格式是 --{language}-kinds
选项 fileds 用于指定每条标记的扩展字段域
extra 选项用于增加额外的条目: f表示为每个文件增加一个条目, q为每个类增加一个条目
Ctrl + ]
跳转到变量或函数的定义处,或者用命令
:ta name
而使用快捷组合键
Ctrl + o/t
返回到跳转前的位置。
如果想展现函数列表 ,需要再借助taglist
安装taglist插件
下载taglist http://sourceforge.net/projects/vim-taglist/files/ ,
以 taglist_45.zip 为例进行演示,首先,在个人目录(~)下创建.vim目录,将taglist_45.zip中的内容解压缩到该目录下:
$ cd ~
$ sudo mkdir .vim
$ sudo mkdir .vim/plugin
$ cd .vim
$ sudo unzip ../taglist_45.zip
$ ls
doc plugin
进入Vim,在命令模式下输入“helptags ~/.vim/doc”,即完成了Taglist的安装。
vim打开一个xx.cpp文件(前提tags文件已经生产),命令含模式下:Tlist即可列出函数列表,ctrl键然后按两下w键在正常编辑区域和tags区域中切换。
可以参考:http://blog.csdn.net/skyflying2012/article/details/8112144