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
vim + ctag + Taglist (转)的更多相关文章
- vim + ctags + taglist配置和使用
vim +ctags + taglist ,ctags+cscope 安装配置和使用 内容:VIM下ctags和taglist的安装配置方法:一键安装 ctags和cscope的方法 :vim语法高亮 ...
- Vim+Ctags+Taglist组合:
Ctags 1,sudo apt-get install Ctags //会提示最新版本的名字:Exuberant Ctags 2,在源码的最上层目录执行:ctags -R //会在当前目录先生成一个 ...
- 第21月第9日 windows下使用vim+ctags+taglist
1. windows下使用vim+ctags+taglist 最近在公司的同事指导下,学会使用这个东西编写代码,效率提高了不少.所以记录下来,方便大家使用. 1. 下载gvim74.exe文件,并安装 ...
- windows下使用vim+ctags+taglist
最近在公司的同事指导下,学会使用这个东西编写代码,效率提高了不少.所以记录下来,方便大家使用. 1. 下载gvim74.exe文件,并安装.注意一般安装的路径中不要存在空格 2. 下载taglist_ ...
- vim中taglist使用
转载:http://www.cnblogs.com/mo-beifeng/archive/2011/11/22/2259356.html 本节所用命令的帮助入口: :help helptags :he ...
- vim 插件 -- taglist
taglist 插件是基于ctags生成的tags文件一个工具.主要是用来生成当前文件的结构.如:函数名.变量名结构.具体如下图: 下载 https://www.vim.org/scripts/scr ...
- vim 中Taglist的安装和使用
将vim 改造成功能强大的IDE系列之二 『插件介绍』 Taglist是vim的一个插件,提供源代码符号的结构化视图. 效果图:(直接使用了别人的图片.在我机器上也差不多-) 『下载和安装』 1)从h ...
- 快速配置vim+ctags+taglist
实验平台:centos 7 1.安装vim编辑器 点击(此处)折叠或打开 $sudo yum install vim 并编辑配置文件.vimrc文件,放在主目录下/home/developer 参考配 ...
- Mac下vim安装taglist
1 安装taglist taglist 的安装非常简单.从vim官网的这个链接 http://www.vim.org/scripts/script.php?script_id=273,就可以下载到ta ...
随机推荐
- java获取字符串编码和转换字符串编码
public class EncodingUtil { // 这里可以提供更多地编码格式,另外由于部分编码格式是一致的所以会返回 第一个匹配的编码格式 GBK 和 GB2312 public stat ...
- PHP定时任务实现(计划任务 vs node.js)
PHP自动任务(单线程) 一.计划任务实现 :最终需要在服务器(windows)上 设置计划任务 1.写好php任务文件 auto.php:链接数据库 判断条件操作数据库 2.创建bat文件 例:ru ...
- 32. 持续集成简介及JDK、Tomcat、Jenkins环境搭建
持续集成简介 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验 ...
- jQuery内容过滤选择器再探究(原创)
内容过滤选择器不算复杂,但还是有需要注意的地方
- nutch1.9 + solr4.72
solr.server.url : URL of the SOLR instance (mandatory) solr.commit.size : buffer size when sending t ...
- Android组件内核之间组件间通信方案(四)下篇
阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680本篇文章将继续从以下两个内容来介绍通信方案: [ViewModel 与 V ...
- sudo: unable to resolve host 枝桠
Ubuntu环境, 主机名字叫枝桠(机器的hostname), 每次执行sudo 就出现这个警告讯息: 虽然sudo 还是可以正常执行, 所以就直接从/etc/hosts 设定, 让枝桠(hostna ...
- 深入Linux内核架构 - 内核之中数据结构之间的关系图 & 设备驱动程序(转)
内核之中数据结构之间的关系图 设备驱动程序
- systemd-tmpfiles - Operation not permitted chown ; systemd-modules-load.service
systemd-tmpfiles-setup.service fail 一般为 /exports/rfs/var/lib/systemd/ 下的文件属性问题 , chown -R root:r ...
- redis数据操作篇
服务器端 服务器端的命令为redis-server 可以使⽤help查看帮助⽂档 redis-server --help 个人习惯 ps aux | grep redis 查看redis服务器进程su ...