源代码阅读工具:Vim+Taglist+Ctags

源代码阅读工具:Vim+Taglist+Ctags

 

From :http://www.lupaworld.com/home-space-do-blog-uid-415320-id-228304.html

一直以来我学习linux源码的时候都是利用http://lxr.linux.no/+trees的,但是一个偶然的机会这个网站打不开了,所以我必须去寻找其他的方法去了解源码。今天我在看《linux编程技术详解》这本书中看到了Vim+Taglist+Ctags阅读源码的方法,于是我抱着试试的态度开始了对它的安装和使用。
1、Taglist和Ctags介绍
Taglist是一个Vim的源代码浏览插件,提供了在Vim中查看文件中包含的函数列表和类中的方法类表的功能。Taglist功能的实现要依赖于Ctags。Ctags是一个用于产生代码索引文件的插件,起产生的索引文件用于帮助文本编辑器或其他工具快速、准确定位符号在代码文件中的位置。
2、Ctags安装
在http://ctags.sourceforge.net/ 上下载最新的Ctags,我这里下载的是ctags-5.8.tar.gz,首先解压缩:
sally@sally-desktop:~/桌面$ tar zxvf ctags-5.8.tar.gz
进入解压缩后的目录中:
sally@sally-desktop:~/桌面$ cd ctags-5.8/
编译、安装ctags
sally@sally-desktop:~/桌面/ctags-5.8$ ./configure
sally@sally-desktop:~/桌面/ctags-5.8$ make
sally@sally-desktop:~/桌面/ctags-5.8$ sudo mkinstalldirs
sally@sally-desktop:~/桌面/ctags-5.8$ sudo make install
至此,ctags的安装已完成,这时可以输入ctags检验是否成功安装了该软件。
sally@sally-desktop:~/桌面/ctags-5.8$ ctags
ctags: No files specified. Try "ctags --help".
3、Taglist安装
在http://sourceforge.net/projects/vim-taglist/files/上下载最新的Taglist,我这里下载的是:taglist_45.zip
首先,在个人目录下创建.vim目录,将taglist_45.zip中的内容解压缩到该目录下
sally@sally-desktop:~$ mkdir .vim
sally@sally-desktop:~$ mkdir .vim/plugin
sally@sally-desktop:~$ cd .vim
使用unzip解压缩出taglist_45.zip中的文件,
sally@sally-desktop:~/.vim$ unzip ../taglist_45.zip
sally@sally-desktop:~/.vim$ ls
doc  plugin
进入Vim,在命令模式下输入“helptags ~/.vim/doc",即完成了Taglist的安装。
此时,Ctags和Taglist还没联系起来。为此,需要修改~/.vim/plugin/taglist.vim文件,找到if !exists('loaded_taglist') 在其前边添加上:
let Tlist_Ctags_Cmd="/usr/local/bin/ctags"
添加后的内容为:
sally@sally-desktop:~$ vim .vim/plugin/taglist.vim
……………………(这里省略了部分)
57 " ****************** Do not modify after this line ************************
  58
  59 " Line continuation used here
  60 let s:cpo_save = &cpo
  61 set cpo&vim
  62 let Tlist_Ctags_Cmd="/usr/local/bin/ctags"
  63 if !exists('loaded_taglist')
  64     " First time loading the taglist plugin
  65     "
  66     " To speed up the loading of Vim, the taglist plugin uses autoload
  67     " mechanism to load the taglist functions.
  68     " Only define the configuration variables, user commands and some
  69     " auto-commands and finish sourcing the file
  70
  71     " The taglist plugin requires the built-in Vim system() function. If this
  72     " function is not available, then don't load the plugin.
  73     if !exists('*system')
  74         echomsg 'Taglist: Vim system() built-in function is not available. ' .
  75                     \ 'Plugin is not loaded.'
  76         let loaded_taglist = 'no'
  77         let &cpo = s:cpo_save
  78         finish
  79     endif
…………………………(这里省略了部分)
至此,这些工具便安装完成了!接下来就是使用了,这里以我之前调试的一个内存管理程序为例来说明Vim+Taglist+Ctags的使用过程。
进入源码所在的目录
sally@sally-desktop:~/linux实验$ cd map_driver/
使用ctags -R对该目录和所有子目录中的源代码建立符号数据库
sally@sally-desktop:~/linux实验/map_driver$ ctags -R
使用ls命令确认成功生成了名为tags的符号数据库
sally@sally-desktop:~/linux实验/map_driver$ ls -l tags
-rw-r--r-- 1 sally sally 2401 2010-07-20 20:59 tags
sally@sally-desktop:~/linux实验/map_driver$ vim map_driver.c
在命令行方式下输入::TlistToggle命令来打开索引:按住ctrl键,并且按两下W,即可在正常编辑区域和tags区域中切换。在tags区域中,把光标移动到变量、函数名称上,然后按下enter键,就会自动在正常编辑区域中定位到指定内容。
函数列表区显示的只是map_driver.c中的函数情况,在该文件中使用的在其他代码文件中的函数定义并没有显示出来。可以将光标停留的要查看的函数上,然后按“Ctrl+]”即可查看该函数的定义。查看完该函数的定义,按“Ctrl+O”可以跳回原文件。

你可能感兴趣的:(list)