综合他们多篇博客,做一个自己的总结(从0开始,记录过程)

系统:ubuntu 16.04  vim:7.4.1689

内容来源:

https://www.cnblogs.com/wangzhe1635/p/9025711.html

https://blog.csdn.net/niepangu/article/details/52888116

https://blog.csdn.net/limanjihe/article/details/49994247

关于 ctags、cscope、taglist这个三个工具的安装和使用。

一.ctags

1.安装(apt-get或下载源码)

命令安装:
$ sudo apt-get install ctags
源码安装:
下载:https://sourceforge.net/projects/ctags/files/ctags/5.8/ctags-5.8.tar.gz
    或官网http://ctags.sourceforge.net/中查找需要的版本。
$ ./configure
$ make
$ make install
上述任选1装完成之后查看版本:$ ctags --version

我使用apt-get安装版本如下:

使用:

1.进入源代码目录,命令行输入如下命令,会在当前目录下产生一个新的文件tags。
$ ctags -R (定位标记对象)(-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“”表示所有文件。)
2.基本使用方法:
$ vi –t function_name (命令行输入后可直接跳转到函数位置)
在vim打开的文件中跳转(命令模式):
    :tag func_name (跳到函数func_name位置,然后Tab键匹配查找,上下切换)
:ts (tags list 查看所有函数名为xx的定义位置)
:tp (tags preview)
:tn (tags next)
    :tag (查看指定函数的多个定义)
    :tnext  (跳到第一个定义处,优先跳转到当前文件)
    :tfirst   (跳到第一个)
    :[count]tprevious  (跳到前count个)
    :[count]tnext  (跳到后count个)
    :tlast  (跳到最后一个)
    :tselect tagname  (你也可以在所有tagname中选择)
    :tag / (然后按Tab来选择跳转标签)
    :tselect /^write_ (匹配查找以write开头的所有定义或变量,$表示末尾,^表示开头。第二个参数可替换成任意内容)
光标放在函数上:
Ctrl + ]   从调用位置可以跳转到函数的定义处
    CTRL + T   跳到上一层,可连续跳转。
Ctrl + o 或者 Ctrl + t     回到初始位置

补充:

“$ ctags –R ”:“-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“”表示所有文件。这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此tags文件。

Tags文件中包括这些对象的列表:

用#define定义的宏
枚举型变量的值
函数的定义、原型和声明
名字空间(namespace)
类型定义(typedefs)
变量(包括定义和声明)
类(class)、结构(struct)、枚举类型(enum)和联合(union)
类、结构和联合中成员变量或函数
VIM用这个“tags”文件来定位上面这些做了标记的对象。

二.cscope

命令安装:
$ sudo apt-get install cscope
源码安装:
官网:http://sourceforge.net/projects/cscope/files/

使用方法:

在终端下,切换到源码所在目录后,输入命令:cscope -Rbkq

参数意义:R 表示把所有子目录里的文件建立索引

b 表示仅建立符号数据库,不启动自带的用户界面

k 表示在生成索引时,不搜索/usr/include/目录

q 表示生成cscope.in.out 和 cscope.po.out文件,加快cscope的索引速度

完成后将在当前目录生成这么几个文件:cscope.in.out 、cscope.po.out 和 cscope.out

Linux下阅读源代码工具安装的更多相关文章

  1. [转]Linux下阅读源代码:(g)vim+Taglist+ctags

      Linux下阅读源代码的方法很多,聪明人从标题应该就可以知道,需要(g)vim+Taglist+ctags.3者配合,真是珠联璧合,功力无限啊! vim/gvim什么是vim/gvim,如果看官连 ...

  2. 【转】Linux下XenServer管理工具安装

    转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...

  3. linux下阅读源代码的工具

    说来真是惭愧呀.一直在用VIM 做开发.却不知道VI 里还有这么好使的工具.以前一直都是用: find -type f -print | xargs grep -i **** 在源代码里查找. 原来L ...

  4. Linux下基于源代码方式安装MySQL 5.6

    MySQL为开源数据库,因此能够基于源代码实现安装.基于源代码安装有很多其它的灵活性. 也就是说我们能够针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码.依据不同的软件平台环境调整相关的编译 ...

  5. linux下gitflow辅助工具安装和使用

    gitflow是一个确保nvie推荐的git branch分支策略最佳模型得到有效实施的辅助工具.它作为git的一个子命令而存在. http://nvie.com/posts/a-successful ...

  6. Linux下批量管理工具pssh安装和使用

    Linux下批量管理工具pssh安装和使用 pssh工具包 安装:yum -y install pssh pssh:在多个主机上并行地运行命令 pscp:把文件并行地复制到多个主机上 prsync:通 ...

  7. linux下常见的包安装方式

    linux下常见的包安装方式 一.总结 一句话总结: rpm包安装 tar.gz源代码包安装 yum方式安装rpm包 bin文件安装 1.yum是什么? 安装所有依赖的软件包 Yum(全称为 Yell ...

  8. Linux下指定版本编译安装LAMP

    说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...

  9. linux磁盘清理方法 Linux 下垃圾清理工具 BleachBit

    由于当初安装系统设计不合理,有些分区的过小,以及网络通讯故障等造成日志文件速度增长等其他原因都可以表现为磁盘空间满,造成无法读写磁盘,应用程序无法执行等.下面就给你支几招(以/home空间满为例): ...

随机推荐

  1. .NET并行计算和并发8:硬件支持

    共享内存多核系统,分布式内存系统 区别 分布式内存系统主要通过Message passing interface在各个微处理器之间通信,但是MPI共享内存多核系统是没有必要的,会造成额外的开销. 分布 ...

  2. 周强 201771010141面向对象程序设计(java)》第十七周学习总结

    线程同步 多线程并发运行不确定性问题解决方案:引入线 程同步机制,使得另一线程要使用该方法,就只 能等待. ⚫ 在Java中解决多线程同步问题的方法有两种: 1.- Java SE 5.0中引入Ree ...

  3. python中的字典

    字典:由多个键及与其对应的键-值对组成,用:隔开,用花括号 括起来  phone_book={'Daming':'2202','Amy':'5462','Sam':'4785'} dict函数:

  4. 1. ReactJS基础(开发环境搭建)

    本文主要介绍通过React官方提供的create-react-app脚手架进行开发环境的搭建. 1.安装node环境(安装过程这里不做介绍,可参考其他博文) 在cmd中输入node -v 如果可以看到 ...

  5. 开发Canvas 绘画应用(一):搭好框架

    毕业汪今年要毕业啦,毕设做的是三维模型草图检索,年前将算法移植到移动端做了一个小应用(利用nodejs搭的服务),正好也趁此机会可以将前端的 Canvas 好好学一下~~毕设差不多做完了,现将思路和代 ...

  6. UVA10562(看图写树,dfs)

    这个题过的好艰难,不过真的学到好多. 关于fgets的用法真的是精髓.!isspace(c)和c!=' '是有区别的. 其它的看代码吧 #include <iostream> #inclu ...

  7. ctrl+c以及写操作失败和flush

    .kill命令可以带信号号码选项,也可以不带.如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源.也可以用kill向进程发送特定的信号 ...

  8. windows下配置maven

    首先下载好maven的压缩包,然后解压到某个目录下,我解压到了D盘 打开readme.txt 1.2步已经完成,第3步的意思是让我们把bin所在的路径添加到系统变量的path中去 第4步意思是确保的你 ...

  9. Java中HBase的集中過濾器

    比較過濾器:    rowKey过滤器 RowFilter    列族过滤器 FamilyFilter    列过滤器               QualifierFilter    列值过滤器   ...

  10. 一次奇妙的http请求之旅

    TCP/IP不是一个协议,而是一个协议族的统称.里面包括IP协议.IMCP协议.TCP协议. 这里有几个需要注意的知识点: 互联网地址:也就是IP地址,一般为网络号+子网号+主机号 域名系统:通俗的来 ...