zoukankan      html  css  js  c++  java
  • vim + ctag + Taglist (转)

    一、ctag

    当然,第一步就是要下载它!一条命令搞定:


    $sudo apt-get install ctags


    如果不幸提示找不到软件包ctags,首先你也许应该update一下你的软件源,还不行的话试试把ctags改成 exuberant-ctags

    下载完了你就可以用它来产生我们的标签文件tags 了,tags文件是实现跳转功能的英雄,就是它把我们送到我们想要去的地方的——比如我在我的程序里写了一个库函数foo,在某个时刻我想查看这个库函数本身是怎么实现的?那我只需把光标停在关键词上,再按一下组合键 ( ctrl + ] ) 就会立刻帮我跳转到库函数foo的源代码的地方,按一下组合键 ( ctrl + o ) 就可以跳回来!很厉害吧?当然如果foo是库函数对一个系统调用的封装,你就可以顺着tags 给我们提供的道路跳到内核去查看源代码是怎么写的,当然这期间可能会有不止简单的两层封装定义,但我们一次次跳转就可以深入其里,了解内幕!哈哈!怎么做?全程仅需两步,follow me!

    第一步 ,在我们的跳转目的地 执行这条命令:


    $ctags -R


    比如我想要我的程序能随时去库函数 里查询原型,那我就可以在库函数源代码的顶层目录~/downloads/glibc-2.9下执行上面那条命令:

        ~$cd ~/downloads/glibc-2.9

        ~/downloads/glibc-2.9$ctags -R

    命令中的选项-R 的意思是:递归地进入当前目录下的所有子目录,把在该目录下的所有文件的关键词(包括函数名、宏、文件名等等关联到一起,并且写入一个tags文件)。当然,你如果想让你的函数可以跳转到内核,那么你应该在内核源代码的顶层目录下执行这条命令。

    第二步 ,在/etc/vim/vimrc文件中,添加一句话(权且把他们称为au指令吧,因为它以au开头,注意大小写),写上我们程序的所在地 。例如我在完成了第一步后,在我机器的vimrc中添加的内容如下:


    au BufEnter /home/seton/programs /* setlocal tags+=/home/seton/downloads/ glibc-2.9/tags


    当然,你要把上面灰色底色标注出来的路径换成你自己机器上的具体路径。其中/home/seton/programs/*的意思是:在该路径下的所 有文件(因为用了通配符*)都可以通过tags文件实现跳转(包括其子目录),而这个tags文件,就是由后面这个路径/home/seton /downloads/glibc-2.9/tags指定。帅!也许你会问,那我就干脆写成 /* 就行啦,那么系统中的任何一个文件我都可以跟gilbc-2.9关联,实现跳转,当然你可以这么做,但有时候你并不需要这么做。

    这就搞定了,你现在就可以斟杯卡布奇诺享受自由跳转的乐趣了,但我们可以加更多的东西,比如把内核源代码也添加进来,必要时我们就跳到内核中去瞧 瞧,怎么实现,如法炮制,先在内核源代码顶层目录执行指令ctags -R,然后在/etc/vim/vimrc文件中再添加一句话即可,当然添加时要把tags所在的路径替换成内核源代码的路径。例如,变成这样:


    au BufEnter /home/seton/programs /* setlocal tags+=/home/seton/downloads/ glibc-2.9/tags

    au BufEnter /home/seton/kernel_programs /* setlocal tags+=/home/seton/downloads/ linux-2.6.31/tags


    当然你还需要一个非常重要的vim命令ts ,因为你要跳转的关键词可能出现在库函数中,也可能出现在内核源码中,也可能同时都有对此关键字的定义,这时候你就要在vim命令模式下敲入:ts 来罗列出所有出现该声明关键词的地方(显然你应该先把光标停在你想要跳转的关键词上面),然后按相应的序号在进行跳转。罗列的次序跟你在vimrc中写au指令的顺序相关,谁写在上面就先罗列谁。

    二、Taglist

    Taglist是vim的一个插件,可以方便地在终端侧边显示出当前程序所有的函数、宏等信息,支持鼠标双击跳转,对于规模比较大的代码而言,这是一个非常实用功能。

    Taglist的使用非常简单,只需在网上下载一个配置文件即可,可以用下面这个链接下载:

    http://download.csdn.net/source/249784

    下载完了解压,将会蹦出俩文件夹(doc和plugin),然后就潇洒地把这两个文件夹扔到主目录下的隐藏文件夹.vim吧!(没有这个隐藏文件夹的话就mkdir一个)。搞定之后,用vim打开你的程序源码,敲下命令:Tlist 打开列表,再输入一次关闭列表。试试看看效果吧。

    原文出处:http://blog.csdn.net/seton040/article/details/4718615

  • 相关阅读:
    Code Forces Gym 100886J Sockets(二分)
    CSU 1092 Barricade
    CodeChef Mahesh and his lost array
    CodeChef Gcd Queries
    CodeChef GCD2
    CodeChef Sereja and LCM(矩阵快速幂)
    CodeChef Sereja and GCD
    CodeChef Little Elephant and Balance
    CodeChef Count Substrings
    hdu 4001 To Miss Our Children Time( sort + DP )
  • 原文地址:https://www.cnblogs.com/Mr-Shadow/p/3200460.html
Copyright © 2011-2022 走看看