您的位置:首页 > 编程语言

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

2013-05-23 13:04 357 查看
一直以来我学习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”可以跳回原文件。

转自:/article/6259580.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: