1. 安装ctags和cscope

sudo apt-get install -y exuberant-ctags cscope

2. vimrc中的配置

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope setting
"
" cscope 使用方法:
" -R: 在生成索引文件时,搜索子目录树中的代码
" -b: 只生成索引文件,不进入cscope的界面
" -q: 生成cscope.in.out和cscope.po.out文件,加快索引
" -k: 在生成索引文件时,不搜索/usr/include目录
" -i: 保存文件列表的文件名不是cscope.files时需此项,可使用“-”
" -I dir: 在-I选项指出的目录中查找头文件
" -u: 扫描所有文件,重新生成交叉索引文件
" -C: 在搜索时忽略大小写
" -P path: 在以相对路径表示的文件前加上的path,
" 可不切换至数据库文件所在目录亦可使用
"
" cscope find的用法:
" cs find c|d|e|f|g|i|s|t name
" 0 或 s 查找本 C 符号(可以跳过注释)
" 1 或 g 查找本定义
" 2 或 d 查找本函数调用的函数
" 3 或 c 查找调用本函数的函数
" 4 或 t 查找本字符串
" 6 或 e 查找本 egrep 模式
" 7 或 f 查找本文件
" 8 或 i 查找包含本文件的文件
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if has("cscope")
if has("unix")
set cscopeprg=/usr/bin/cscope
elsei has("win16") || has("win32")
" path\to\cscope
endif
set cscopetag " 使用<C-]>进行跳转
set cscopetagorder= " :cscope find g foo,然后:tselect foo
set nocscopeverbose " 添加数据库时不显示详细信息
" 添加cscope.out
if filereadable(expand("%:p:h") . "/" . "cscope.out")
let cscope_file = expand("%:p:h") . "/" . "cscope.out"
cs add cscope_file
elseif filereadable(expand("%:p:h") . "/../" . "cscope.out")
let cscope_file = expand("%:p:h") . "/../" . "cscope.out"
cs add cscope_file
elseif filereadable(expand("%:p:h") . "/../../" . "cscope.out")
let cscope_file = expand("%:p:h") . "/../../" . "cscope.out"
cs add cscope_file
elseif filereadable(expand("%:p:h") . "/../../../" . "cscope.out")
let cscope_file = expand("%:p:h") . "/../../../" . "cscope.out"
cs add cscope_file
elseif filereadable(expand("%:p:h") . "/../../../../" . "cscope.out")
let cscope_file = expand("%:p:h") . "/../../../../" . "cscope.out"
cs add cscope_file
endif
" 添加tags(can't use set tags in this section)
if filereadable(expand("%:p:h") . "/" . "tags")
let TAGSFILEN = expand("%:p:h") . "/" . "tags"
let &tags = expand(&tags . "," . TAGSFILEN)
elseif filereadable(expand("%:p:h") . "/../" . "tags")
let TAGSFILEN = expand("%:p:h") . "/../" . "tags"
let &tags = expand(&tags . "," . TAGSFILEN)
elseif filereadable(expand("%:p:h") . "/../../" . "tags")
let TAGSFILEN = expand("%:p:h") . "/../../" . "tags"
let &tags = expand(&tags . "," . TAGSFILEN)
elseif filereadable(expand("%:p:h") . "/../../../" . "tags")
let TAGSFILEN = expand("%:p:h") . "/../../../" . "tags"
let &tags = expand(&tags . "," . TAGSFILEN)
elseif filereadable(expand("%:p:h") . "/../../../../" . "tags")
let TAGSFILEN = expand("%:p:h") . "/../../../../" . "tags"
let &tags = expand(&tags . "," . TAGSFILEN)
endif
set cscopeverbose " 添加数据库时显示详细信息
endif

3. 生成tags和cscope.out的脚本

#!/bin/bash -
#===============================================================================
#
# FILE: cstags
#
# USAGE: ./cstags
#
# DESCRIPTION:
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: linkscue(scue),
# ORGANIZATION:
# CREATED: 2013年08月02日 16时44分12秒 HKT
# REVISION: ---
#=============================================================================== echo "正在生成tags文件"
/usr/bin/ctags -R --fields=+lS .
if [[ $? == ]]; then
echo "生成tags文件成功"
echo "$(readlink -f tags)"
else
echo "生成tags文件失败"
fi echo "正在生成cscope.out"
find . -name "*.s" -o -name ".S" \
-o -name "*.c" -o -name "*.h" \
-o -name "*.cpp" -o -name "*.cxx" -o -name "*.cc" \
> cscope.files
/usr/bin/cscope -Rbq
if [[ $? == ]]; then
echo "生成cscope.out成功"
echo "$(readlink -f cscope.out)"
else
echo "生成cscope.out失败"
fi

〖Linux〗(2013.08.02)使用ctag+cscope查看Android源代码的更多相关文章

  1. 〖Linux〗(2013.08.02)VIM74b+YouCompleteMe,VIM代码编辑器补全能手

    1. 编译和安装vim74b(参考:http://t.cn/zQa8R7h ) sudo apt-get install -y hgsvn libncurses5-dev libgnome2-dev ...

  2. 在eclipse中查看android源代码

    自己写了一个类MainAcvitivity extends Activity, 按F12(我把转到定义改成了F12的快捷键),转到Activity的定义,弹出下面这样的界面 就是说没有找到androi ...

  3. [Android Pro] Android学习——在线查看android源代码的3种方式

    原文:http://blog.csdn.net/chuekup/article/details/8067075 1. https://github.com/android 2. http://grep ...

  4. http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

    http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

  5. http://www.cnblogs.com/flyoung2008/archive/2013/08/11/3251148.html

    http://www.cnblogs.com/flyoung2008/archive/2013/08/11/3251148.html

  6. linux下的二进制文件的编辑和查看

    linux下的二进制文件的编辑和查看 http://blog.csdn.net/wangxiaoqin00007/article/details/6618003 一.在Linux下查看二进制文件的软件 ...

  7. 北京设计模式学习组bjdp.org第7次活动(2013.08.04)回顾会纪要

    时间:2013.08.04,9am-7pm 地点:北京龙泉寺(北京凤凰岭风景区内) 参加人数:北京龙泉寺信息中心(20人).北京设计模式学习组(9人) 活动要点: 1)寺院巡礼:义工师兄带领参观寺院. ...

  8. Linux学习总结(十四)—— 查看CPU信息

    文章首发于[博客园-陈树义],点击跳转到原文Linux学习总结(十四)-- 查看CPU信息. Linux学习总结(十四)-- 查看CPU信息 商用服务器CPU最常用的是 Intel Xeon 系列,该 ...

  9. Linux是cat、tail、head查看文件任意几行的数据

    Linux是cat.tail.head查看文件任意几行的数据 一.使用cat.tail.head组合 1.查看最后100行的数据 cat filename | tail -n 100 2.查看100到 ...

随机推荐

  1. [CF115E]Linear Kingdom Races

    [CF115E]Linear Kingdom Races 题目大意: 有\(n(n\le10^5)\)个物品,编号为\(1\sim n\).选取第\(i\)个物品需要\(c_i\)的代价.另外有\(m ...

  2. [HEOI2013]SAO

    题目大意: 一个有向无环图上有n个结点, 现在告诉你n-1个条件(x,y),表示x和y的先后关系. 问原图共有几种可能的拓扑序? 思路: 树形DP. f[i][j]表示对于第i个结点,有j个点在它前面 ...

  3. 修改选择排序 Exercise07_20

    import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年12月 * 题目:修改选择排序 * */ public class Exercise07_2 ...

  4. 在活动之间切换(显式Intent)

    实验名称:在活动之间切换 实验现象:通过点击主活动的按钮进入下一个界面 使用技术:显式Intent 步骤: 1.创建一个项目,加载布局.添加一个button 2.新建一个活动. 3.修改按钮的点击事件 ...

  5. asp.net 将repeater上数据导出到excel

    1,首先得到一个DataTable public DataTable GetTable(string sql) { SqlConnnection con=new SqlConnection(Confi ...

  6. 用ldapsearch验证LDAP认证信息

    企业里面各种各样的系统,堆积多了以后帐号数不胜数,比较好的解决方案之一是用LDAP.不过Microsoft的ActiveDirectory认证是否成功需要有命令来进行验证,可以通过ldapsearch ...

  7. ida sdk add_struc_member array

    tid_t tid = get_struc_id ( "foo_type" ) ; struc_t * sptr = get_struc ( tid ); if ( sptr == ...

  8. Windows Server 2012 R2 两个奇葩问题的解决

    1. 服务管理器一打开就崩溃此问题由Intel HD Graphics显卡驱动不兼容引起,卸载掉驱动,仅使用微软基本显示驱动.等待Intel更新符合WDDM 1.3规范的驱动 2. 不能设置静态IP. ...

  9. ORACLE单表理论最大记录数

    不考虑硬件诸如内存,存储等硬件的限制. 一张表理论能存储多少条记录呢? 假设: 一个tablespace中包含1022个datafiles, 单个datafiles的最大是32G 假设每个block是 ...

  10. MyEclipse for Linux版下载

    最近看到很多网友都在找MyEclipse for Linux版下载,费了很大劲也没有找到.1.建议通过代理到官方网站下载. 2.用迅雷下载.设置迅雷使用代理下载(我用的就是这种方式). MyEclip ...