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”可以跳回原文件。
  • 相关阅读:
    Failed to load resource: the server responded with a status of 413 (Request Entity Too Large)
    钱能解决的都是小事——北漂18年(78)
    mysql 排序
    innodb和myisam表排序
    perl 内部字节字符转换
    encode_json 转换给定的perl数据结构为一个UTF-8编码的 2进制字符串 decode_json把UTF-8字节转换成字符
    perl /g
    perl 循环截取字符串
    eclipse报错:Compilation unit name must end with .java, or one of the registered Java-like exten
    用 Flask 来写个轻博客 (30) — 使用 Flask-Admin 增强文章管理功能
  • 原文地址:https://www.cnblogs.com/shenlian/p/2080655.html
Copyright © 2011-2022 走看看