zoukankan      html  css  js  c++  java
  • 源代码阅读工具: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”可以跳回原文件。
  • 相关阅读:
    gThumb 3.1.2 发布,支持 WebP 图像
    航空例行天气预报解析 metaf2xml
    Baruwa 1.1.2 发布,邮件监控系统
    Bisect 1.3 发布,Caml 代码覆盖测试
    MoonScript 0.2.2 发布,基于 Lua 的脚本语言
    Varnish 入门
    快速增量备份程序 DeltaCopy
    恢复模糊的图像 SmartDeblur
    Cairo 1.12.8 发布,向量图形会图库
    iText 5.3.4 发布,Java 的 PDF 开发包
  • 原文地址:https://www.cnblogs.com/shenlian/p/2080655.html
Copyright © 2011-2022 走看看