因为所有设计思想、内部机制都是

以代码的形式实现,所有的资料也都是为了更好的诠释代码。那么一个好的阅读工具,能

够提高阅读的效率和效果。

• "Cscope"[4]为终端下的代码阅读工具,资源消耗少,对那些忠于命令行的行操作的人

,使用起来更加方便、灵活。这也是这篇文章推荐使用的一个重要原因。也有人把

Cscope和Emasc绑定阅读源码。当然工具的选取,也取决于个人习惯。

Vim+Ctags+Cscope

cscope的工作需要vim、ctags的配合,它们都是基于命令行的。

下面只是给出了三种工具的常用方法,更多功能可查看man手册,或者官方文档。

二、Ctags

安装:

aptitude install ctags

在源代码根目录下执行 ctags -r 命令用来为程序源代码生成标签文件,其-r选项表示递

归操作,同时为子目录也生成标签文件。vim利用生成的标签文件,可以进行相应检索、并

在不同的文件C语言元素之间来回切换。

在vim中ctags的简单使用

1) 跳转到指定的函数进入vim后,用 “:tag func_name“ 跳到函数func_name处。使用tag

命令时,可以使用TAB键进行匹配查找,继续按TAB键向下切换。

某个函数有多个定义时

:tag

跳到第一个定义处,优先跳转到当前文件

:tnext

跳到第一个

:tfirst

跳到前count个

:[count]tprevious

跳到后count个

:[count]tnext

跳到最后一个

:tlast

你也可以在所有tagname中选择:

:tselect tagname

如果想跳到包含block的标识符:“tag /block” 然后用TAB键来选择。这里'/'就是告诉vim

'block'是一个语句块标签。

2)用“CTRL + ]“快捷键,跳转到光标所在函数标识符的定义处。

3)使用“CTRL + T”退回上层。如果想在以write_开头的标识符中选择一下, :tselect /^

write_ 这里,'^'表示开头,同理,'$'表示末尾。多个同名的标识符

三、debian默认没有安装cscope

一、安装:atp-get install cscope

运行cscope命令,出现两个面板,上方是一个查找结果的显示面板,下方是一个查找条件

指定面板。使用TAB键在两个面板间切换,也可使用上下左右方向件和翻页键在同一面板内

贴换位置。选中显示面板的某个项,回车即可进入该文件,这是调用vim打开文件,这时就

可以结合ctags使用了。当然也可以直接使用vim打开文件,结合ctags阅读源码。

使用前,必须现使用“cscope-indexer -r”命令递归生成索引信息文件。特殊情况下,还需

要用户使用find命令,主动生成索引信息文件,并指定给cscope工具。 cscope提供了如下

九种查询方式:

Find this C symbol:

#查找指定的C符号

Find this global definition:

#查找指定的全局定义

Find functions called by this function:

#查找指定函数调用的函数

Find functions calling this function:

#查找调用指定函数的函数

Find this text string:

#查找字符串

Change this text string:

#修改指定字符串

Find this egrep pattern:

#查找匹配字符

Find this file:

#查找指定文件

Find files #including this file:

#指定引用头文件进行查找

在对应某一项中输入查找条件,回车即可进行查询,并将结果显示在显示面板。

K跳转到函数的man页

gg=G 按indent缩进格式化整个文件

== 格式化整行

=a{格式化当前{}程序块

gf 查找文件,在.vimrc中用set path=/u/infdev/**/**/** 来设置搜索路径

/* 折行功能可以将一节浓缩为一行, 只显示其大概. */

zo 打开折行

zc 关闭折叠

在编辑模式下用ctrl+o可以暂时进行命令模式

[{ 命令跳转到当前代码块的开头,

]} 会跳转到当前代码块的末尾.

[[ 向前查找一个函数的开始

]] 向后查找一个函数的开始

][ 向前查找一个函数的结尾,

[] 向后查找一个函数的结尾,

{   到前一个空行上

}   到下一个空行上

#   到与当前单词相同的上一个单词上

*   到与当前单词相同的下一个单词上

%   可以让光标从它当前所在的括号跳转到与它相匹配的括号上去,

CTRL+] 跳转tags定义的地方=        ctrl+t返回调用tag的地方

gD 查询变量,只在本文件中

gd 查询变量, 只在本函数中

[i        查询变量的定义

[    跳到变量定义的地方

set makeprg=nmake  后面nmake可自己定义,一般不用定义

:make   编译程序

:cnext 跳到下一个编译错误

:cc   看完整的错误信息

:clist 看所有错误信息

:e b在命令行用tab可以补全  按ctrl+d列出所有匹配

q: 列出命令窗口

Vim有一种记录宏的机制。你键入"qa"开始把一段宏记录入寄存器变量`a'中。按下来你可以象平常一样键入你要的操作,

只是这些操作都会被Vim记录进它命名为`a'的宏中, 再次再下"q"键,

就结束了宏`a'的录制。当你要重复执行你刚才记录的那些操作时只要使用"@a"命令。共有26个可用的寄存器供你记录宏。

二为代码生成数据库

2、首先需要为你的代码生成一个cscope数据库。生成数据库很简单,在你的项目根目录运行下面的命令:

cscope -Rbq

如果不是c代码,使用:

$ find ./ -name "*.c" -or -name "*.h" -or -name "*.cpp" -or -name "*.S" | cscope -Rbq

这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。

具体的参数的含义可以通过:man cscope 得到。-R: 在生成索引文件时,搜索子目录树中的代码

-b: 只生成索引文件,不进入cscope的界面

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

-k: 在生成索引文件时,不搜索/usr/include目录

-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件列表。

-I dir: 在-I选项指出的目录中查找头文件

-u: 扫描所有文件,重新生成交叉索引文件

三在VIM中使用cscope

1 、用vim编辑的时候:

vim FILENAME.c

2 把生成的cscope文件导入到vim中来

:cs add /路径/cscope.out 代码所在目录

我习惯现切换到代码所在目录再操作,所以直接使用:

:cs add cscope.out 就可以了。

3 查看是否已经连接到对应数据库

:cs s

4 cs f s xxxx 查找xxxx出现的地方,它能详细列出哪些文件的哪行的哪个函数引用,以及该行的内容.

,首先调用“cscope add”命令添加一个cscope数据库,然后就可以调用“cscope

find”命令进行查找了。VIM支持8种cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:cs

find c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:cs find s

work”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可

以输入一个正则表达式,这类似于egrep程序的功能。

s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方

g: 查找函数、宏、枚举等定义的位置。

cs f g main 光标跳到main函数的位置

d: 查找本函数调用的函数

cs f d main 列出main函数调用的函数,输入函数所对应的数字,就可以调到相应掉用的函数

c: 查找调用本函数的函数

cs f c main 会输出找到没有匹配的结果,因为没有函数调用main函数

t: 查找指定的字符串

cs f t STRING

f: 查找并打开文件

file:///E:/sun/3/w文档/unanao%20%20Debian%20下使用Vim+Ctags+Cscope阅读源代码.htm

vim cscope php,使用Vim+Ctags+Cscope阅读源代码相关推荐

  1. vim无法打中文_vim+ctags+cscope+Taglist+Nerdtree打造成sourceinsight

    听说vi很强大?是的,最近笔者需要在Linux下编写一些C代码和查看一些C源码,但是默认的vi并不支持函数之间的跳转.查看函数的定义等等,所以笔者就将vi打造成了一个ide(可以勉强称得上吧).首先我 ...

  2. 使用Vim+Ctags+Cscope阅读源代码

    2019独角兽企业重金招聘Python工程师标准>>> 因为所有设计思想.内部机制都是 以代码的形式实现,所有的资料也都是为了更好的诠释代码.那么一个好的阅读工具,能 够提高阅读的效 ...

  3. Linux 内核阅读工具vim+ctags+cscope+taglist

    今天,来介绍一下vim+ctags+cscope+taglist的内核阅读配置.当使用过之后,我相信大部分人都会舍弃之前的Eclipse(我就是活生生的一个例子).我们先来看看实现的界面是怎么样的: ...

  4. 【转】使用 vim + ctags + cscope + taglist 阅读源码

    原文网址:http://my.oschina.net/u/554995/blog/59927 最近,准备跟学长一起往 linux kernel 的门里瞧瞧里面的世界,虽然我们知道门就在那,但我们还得找 ...

  5. linux vim ctags,Linux环境上代码阅读与编写的利器-vim+ctags+cscope

    Linux环境下代码阅读与编写的利器----vim+ctags+cscope 所谓工欲善其事,必先利其器. 从事Linux程序开发,特别是Linux驱动程序的开发,不管是通过windows下虚拟一个L ...

  6. Vim+ctags+cscope+Nerdtree+Taglist入门

    介于linux下并没有什么像Source Insight这样优秀的内核源码阅读工具,只有一些模仿的都不伦不类,所以我用打造vim为一个合格的源码阅读器,看着贼爽. 可能一下子看起来那么多东西可能怕怕的 ...

  7. 配置vim支持源码浏览(vim+ctags+cscope)

    2019独角兽企业重金招聘Python工程师标准>>> 配置vim支持源码浏览(vim+ctags+cscope) 介绍 windows下流行的源码阅读软件是source insig ...

  8. Linux下编译cscope,vim+ctags+cscope 常用技巧和命令

    首先声明,本文不适用于初学者! 1 编译ctags需要的文件 #make ARCH=x86 tags ARCH=x86 的意思是除了索引指定的x86体系结构的代码外,不索引其他体系结构的想关代码 2 ...

  9. Windows10下用vim+ctags+cscope搭建属于自己的IDE

    工欲善其事,必先利其器.一个强大的开发环境可以大大提高工作效率.估计大家经常用的IDE工具如SourceInsight,Notepad++,VScode等等.SourceInsight属于收费软件,其 ...

最新文章

  1. Poj3177 分离的路径
  2. Qt Creator从Blender导出3D资产
  3. 我的工作日常:一个CSS问题引起的小插曲
  4. knn算法(分类)-机器学习
  5. 解决SQL server不支持utf8,php却用utf8的矛盾问题
  6. 使用一次性密码本通过 SSH 安全登录 Linux
  7. B00015 C++实现的图类
  8. Machine Learning - XI. Machine Learning System Design机器学习系统设计(Week 6)系统评估标准
  9. Dart基础第5篇:自增自减运算符、for、while、do...while循环、continue、break、多维列表循环
  10. 8VC Venture Cup 2016 - Final Round (Div. 2 Edition)
  11. bluez5.50+pulseaudio实现蓝牙音响音频播放
  12. 星星之火OIer:2019.1.5考试总结
  13. 暴雪在计算机名字,战网怎么改名字 战网改名字简单几步就能修改
  14. python字面量是什么_字面量是什么?
  15. GICv3/v4-软件概述
  16. 老贾笔记--轻轻松松oracle之logmnr篇[吃顿饭的功夫学恢复误删除(delete)的数据]
  17. 5G承载网,到底有哪些关键技术?
  18. sudo修改文件夹名字_linux
  19. Android UI美化基本
  20. 配置了Maven环境变量后,cmd中mvn -v一直报“mvn不是内部命令”

热门文章

  1. win764位不能改计算机名,win7 64位旗舰版系统无法修改MAC的原因和解决
  2. 不同年龄段的孩子如何选择编程课程?它又能为我们带来什么?
  3. php 剪贴板,windows中剪贴板是指
  4. 计算机系期中教学检查,第二学期期中教学检查的自查报告
  5. 程序员吐槽:公司开源节流要求降薪,网友:一石三鸟啊!
  6. 读取摩托罗拉数据在XPROG米V5.0没有响应和超时错误
  7. 几个pdf怎么合并在一起?
  8. mysql+odbc驱动安装_MySQL的ODBC驱动下载及安装及ODBC配置
  9. T-SQL 计算固定资产折旧(直线法)
  10. 网站整合Ucenter详细流程