vim+ctags+cscope 打造Android源码阅读工具

转载 2012年03月21日 13:30:35
vim+ctags+cscope 打造Android源码阅读工具
http://hi.baidu.com/snownight/blog/item/2f6e6327fe8e0210918f9d94.html
vim+ctags+cscope 打造Android源码阅读工具
2011-02-17 10:11

1. 在Android源码顶层目录下运行ctags -R 生成tags文件

2. 在Android源码顶层目录运行cscope -Rbq,生成cscope.out文件

3.修改~/.vimrc使之可以自动加载tags和cscope.out文件,注意要使用ctags和cscope数据库,必须在android源码顶层运行vim程序

我的.vimrc如下:

"开关tag窗口

nnoremap <silent> <F8> :TlistToggle<CR>

 

"使用右侧tag窗口

"let Tlist_Use_Right_Window=1

 

"一般设置.

"set nocompatible "VIM而不是VI

set history=50 "历史记录50条

set fenc=utf-8 "设置默认语言为8位unicode

"man Q gq "屏蔽Q, 以免进入Ex模式

filetype on "打开文件类型检测

 

"

""颜色设置.

colorscheme delek "主题

"colorscheme evening "主题

syntax on "语法高亮

"set hls " 查找文本高亮

 

"界面设置.

set ruler "显示当前位置

set number "显示行号

""set nonumber "不显示行号

 

"格式设置.

set autoindent "自动缩进

set smartindent "智能缩进

set cindent "C缩进

set tabstop=4 "硬TAB

set softtabstop=4 "软TAB

set shiftwidth=4 "缩进空格数

set expandtab "空格替换TAB

"set smarttab "智能TAB

"

set showmatch "显示匹配

"set matchtime=5 "1/10秒延迟

"set hlsearch "高亮搜索

"set incsearch "搜索中匹配

set tags=tags; "ctags

"set autochdir "ctags

 

4.但是这样有个问题就是每次必须从android顶层运行vim,从子目录中运行ctags和cscope无法正常使用。因此我写了一个脚本,用来解决这个问题

#! /bin/bash 

i=`pwd` 

cd ~/source/unicore_src 

vim $i/$1 $2 $3 

cd $i

保存成mvim可执行文件,放到PATH环境变量中,就可以在子目录中通过mvim来打开android源码,并进行各种跳转了。

使用cscope的最大好处是可以替代source insight的功能,并可以快速定位某个函数在哪些地方被调用,非常方便




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


http://www.man.lupaworld.com/thread-49968-1-1.html
代码阅读工具简介

对于学习Linux内核的人来说,源代码的阅读尤为重要。因为所有设计思想、内部机制都是
以代码的形式实现,所有的资料也都是为了更好的诠释代码。那么一个好的阅读工具,能
够提高阅读的效率和效果。常见的代码阅读工具有,Source Navigator、Source Insight
、lxr、Cscope、Kscope等。

  • &amp;quot;Source Navigator&amp;quot;是红帽子公司的,以GNU GPL发布,可从官方网站[1]下载使用。
  • &amp;quot;Source Insight&amp;quot;目前只有Windows平台的,官方网站[2]。需要注册才能使用,或者
    从网上下载注册机生成注册码。在Linux下通过wine模拟虽然可以方便使用,但它毕竟
    是Windows平台的东西,并不能很自由的使用。
  • lxr(linux cross reference)[3]为程序源代码建立索引数据库,利用perl脚本CGI动态
    生成包含源码的web页面,你可以用任何一种浏览器查阅。缺点是需要服务器支持,还
    有速度。
  • &amp;quot;Cscope&amp;quot;[4]为终端下的代码阅读工具,资源消耗少,对那些忠于命令行的行操作的人
    ,使用起来更加方便、灵活。这也是这篇文章推荐使用的一个重要原因。也有人把
    Cscope和Emasc绑定阅读源码。当然工具的选取,也取决于个人习惯。

Vim+Ctags+Cscope

cscope的工作需要vim、ctags的配合,它们都是基于命令行的。在Ubuntu下,用户只需执
行“sudo apt-get install cscope cscope-indexer ctags vim-full”即可完成软件安装。
下面只是给出了三种工具的常用方法,更多功能可查看man手册,或者官方文档。

Vim

vim被看作是专门为程序员打造的文本编辑器,其丰富的编辑命令都是常用的简单字符,用
户很容易上手。vim可对180多种语言的语法高亮,对C语言自动缩进,真则表达式字符匹配
查找,功能强大,并支持多个操作系统平台。关于vim的使用,这里不做讲解。vim中文文
档[5]。
在Ubuntu下默认安装的vim,没有语法加亮功能。所以需要安装vim-full,并在vim 配置
文件 ~/.vimrc中添加一行 &amp;quot;syntax on&amp;quot; 这样在vim中打开的源码就有了语法高亮显示。
vim自带了很多颜色主题,可以直接选取下面一行添加到vim配置文件当中,重新打开vim即
可生效。

colorscheme elflord &amp;quot;我使用这个
colorscheme darkblue
colorscheme evening
colorscheme murphy
colorscheme torte
colorscheme desert

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_ 这里,'^'表示开头,同理,'$'表示末尾。多个同名的标识符

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:
#指定引用头文件进行查找

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

应用实例

下面以使用cscope阅读内核源代码为例:

$ wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.6.tar.bz2
#
从Linux内核官网下载内核源代码
$ tar xvfj linux-2.6.27.6.tar.bz2
#解压文件
$ cd linux-2.6.27.6
#进入源代码根目录
$ ctags -R
#递归生成标签文件
$ cscope-indexer -r
#递归生成索引信息文件
$ cscope
#使用cscope阅读源码

标签文件、索引信息文件只需要第一次或者代码发生变动时生成,以后使用直接运行
cscope即可。

大牛教你这样阅读android源码

当你去面试时,经常会被问到,你是否阅读过android系统源码?那系统源码该如何阅读呢? 下面,让我们来看看大牛们是如何阅读的(来自知乎的牛人们http://www.zhihu.com/questio...

vim+ctags+cscope 打造Android源码阅读工具

1. 在Android源码顶层目录下运行ctags -R 生成tags文件 2. 在Android源码顶层目录运行cscope -Rbq,生成cscope.out文件 3.修改~/.vim...

Ubuntu环境下OpenGrok的安装及使用

http://blog.csdn.net/weihan1314/article/details/8944291 OpenGrok是一个快速,便于使用的源码搜索引擎与对照引擎,它能够帮助我们快速的...

Android源码内部编译过程总结(Make)(转)

Android的优势就在于其开源,手机和平板生产商可以根据自己的硬件进行个性定制自己的手机产品,如小米,LePhone,M9等,因此,在我们在对Android的源码进行定制的时候,很有必要了解下,An...

使用vim+ctags+cscope阅读linux内核源码

转于:http://wtz123.iteye.com/blog/1430881  应用于ubuntu系统。       有网络的时候,使用LXR(The Linux Cross Refer...

使用vim+ctags+cscope阅读内核源码

有网络的时候,使用LXR(The Linux Cross Referencer)在线阅读源码固然是一件很爽的事情。在无网络的情况下,只通过vim进入内核源码那样查找就显得有些勉强。接下来,本文将介绍一...

使用 vim + ctags + cscope + taglist 阅读源码

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

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

今天,我们了

vim+cscope+ctags浏览源码

一、用vi+cscope编辑文件1. cscope 用于生成索引文件的选项:-R: 在生成索引文件时,搜索子目录树中的代码-b: 只生成索引文件,不进入cscope的界面-q: 生成cscope.in...

vim:打造Linux程序员的编辑利器(ctags+cscope+taglist+code_complete)

原文 : http://smilejay.com/2012/10/vim-for-linux-programmer/ 在2年前,写过一篇文章“Vim:打造Linux C/C++程序员的编辑器...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vim+ctags+cscope 打造Android源码阅读工具
举报原因:
原因补充:

(最多只允许输入30个字)