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. hdu 3586 树形dp+二分

    题目大意:给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵 树,每条边都有一个权值cost表示破坏这条边的费用,叶子节点为前线.现要切断前线和司令部的联系,每次切断边的费用不能超过上限lim ...

  2. 腾讯通消息webSDK踩坑

    1.腾讯通提供一个通过http协议的接口,可用于发送消息,公告等功能,要使用其功能首先要开启RTX_HTTPServer服务. 2.阅读文档http://rtx.tencent.com/sdk/,为了 ...

  3. 14. Cantor表

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数 ...

  4. MySQL的max_user_connections拒绝连接的一次踩雷经验

    近期线上的数据遇到一个问题,最终原因为max_user_connections和max_connections的一个bug导致,具体过程如下 现象 前端页面不断的出现错误页面. 排查处理过程 按照数据 ...

  5. JVM堆设置及调优

    1.JVM堆设置 -Xmx3550m 设置JVM最大堆内存 为3550M. -Xms3550m 设置JVM初始堆内存 为3550M.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内 ...

  6. IOS-百度地图API用点生成线路、导航、自定义标注 2013年11月更新

    IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽IOS百度地图开发POISearch搜索附近停车场,附近加油站IOS百度地图视角跳到用户当前位置IOS百度地图开发实时路况IOS开发百 ...

  7. java中的容器解释

    解释一:容器(Container)Spring 提供容器功能,容器可以管理对象的生命周期.对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称.如何产生(Proto ...

  8. MySQL5.6新特性之GTID、多线程复制 - 不知为何

    http://www.tuicool.com/articles/yi2aui http://www.cnblogs.com/cenalulu/category/380263.html

  9. DataGridView列自适应宽度

    来源:http://www.cnblogs.com/wolf-sun/p/3480104.html 在做winform项目中,数据控件DataGridView的使用多多少少是会用到的,如果不设置它的属 ...

  10. 【spring cloud】spring boot2.x下 使用feign,注解@EnableFeignClients 找不到的解决方法

    spring boot2.x下 使用feign,注解@EnableFeignClients 找不到的解决方法 在spring boot1.x下,使用注解@EnableFeignClients,jar包 ...