一、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

vim + ctag + Taglist (转)的更多相关文章

  1. vim + ctags + taglist配置和使用

    vim +ctags + taglist ,ctags+cscope 安装配置和使用 内容:VIM下ctags和taglist的安装配置方法:一键安装 ctags和cscope的方法 :vim语法高亮 ...

  2. Vim+Ctags+Taglist组合:

    Ctags 1,sudo apt-get install Ctags //会提示最新版本的名字:Exuberant Ctags 2,在源码的最上层目录执行:ctags -R //会在当前目录先生成一个 ...

  3. 第21月第9日 windows下使用vim+ctags+taglist

    1. windows下使用vim+ctags+taglist 最近在公司的同事指导下,学会使用这个东西编写代码,效率提高了不少.所以记录下来,方便大家使用. 1. 下载gvim74.exe文件,并安装 ...

  4. windows下使用vim+ctags+taglist

    最近在公司的同事指导下,学会使用这个东西编写代码,效率提高了不少.所以记录下来,方便大家使用. 1. 下载gvim74.exe文件,并安装.注意一般安装的路径中不要存在空格 2. 下载taglist_ ...

  5. vim中taglist使用

    转载:http://www.cnblogs.com/mo-beifeng/archive/2011/11/22/2259356.html 本节所用命令的帮助入口: :help helptags :he ...

  6. vim 插件 -- taglist

    taglist 插件是基于ctags生成的tags文件一个工具.主要是用来生成当前文件的结构.如:函数名.变量名结构.具体如下图: 下载 https://www.vim.org/scripts/scr ...

  7. vim 中Taglist的安装和使用

    将vim 改造成功能强大的IDE系列之二 『插件介绍』 Taglist是vim的一个插件,提供源代码符号的结构化视图. 效果图:(直接使用了别人的图片.在我机器上也差不多-) 『下载和安装』 1)从h ...

  8. 快速配置vim+ctags+taglist

    实验平台:centos 7 1.安装vim编辑器 点击(此处)折叠或打开 $sudo yum install vim 并编辑配置文件.vimrc文件,放在主目录下/home/developer 参考配 ...

  9. Mac下vim安装taglist

    1 安装taglist taglist 的安装非常简单.从vim官网的这个链接 http://www.vim.org/scripts/script.php?script_id=273,就可以下载到ta ...

随机推荐

  1. 10-vim-选中命令-01-三种选择文本的方式

    选择文本(可视模式) 学习复制命令前,应该先学会如何选中要复制的代码. 在vi中要选择文本,需要先使用visual命令切换到可视模式. vi中提供了三种可视模式. 按ESC可以放弃选中,返回到命令模式 ...

  2. 导出CSV格式

    import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype. ...

  3. 实用的Python(2)利用Python制作gif动图

    一.简介 moviepy是一个专门用于视频剪辑制作的模块,可以自动化完成很多繁琐的视频剪辑处理工作,除了处理视频数据之外,moviepy中还内置了可以制作gif动图的功能,通过使用moviepy.ed ...

  4. a标签动态修改手机号跳到拨打界面

    <div class="primaryButton"> <a :href.stop="'tel:' + createData.salesPhone&qu ...

  5. im开发总结:netty的使用

    最近公司在做一个im群聊的开发,技术使用得非常多,各种代码封装得也是十分优美,使用到了netty,zookeeper,redis,线程池·,mongdb,lua,等系列的技术 netty是对nio的一 ...

  6. React-Native 使用中的坑

    android 1.键盘会在 ScrollView 之上----不知道是不是未给ScrollView 设置高度的问题 2.navigation的标题在android居中显示办法 navigationO ...

  7. shell位置参数和专用参数举例

  8. Navicat定时 同步数据库

    转载:https://www.cnblogs.com/DFX339/p/11646812.html 我是用在了 mysql 和 sql server 数据同步(操作一模一样) 好文章,简单粗暴.适合我 ...

  9. Spring注解详解(转)

    概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO ...

  10. 当我们在Java中新建一个对象的时候发生了什么?