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. JSONObject 和 JSONArray 的区别和用法

    JSONObject 和 JSONArray 的数据表现形式不同: JSONObject的数据是用 {  } 来表示的,例如: { "id" : "1", &q ...

  2. PAT甲级1066. Root of AVL Tree

    PAT甲级1066. Root of AVL Tree 题意: 构造AVL树,返回root点val. 思路: 了解AVL树的基本性质. AVL树 ac代码: C++ // pat1066.cpp : ...

  3. winform中让pictureBox 显示的图片旋转

    img.RotateFlip(RotateFlipType.Rotate90FlipNone);顺时针旋转90度 RotateFlipType.Rotate90FlipNone 逆时针旋转90度 Ro ...

  4. javascript(js)自动刷新页面的实现方法总结

    自动刷新页面的实现方法总结: 1) <meta http-equiv="refresh"content="10;url=跳转的页面"> 10表示间隔 ...

  5. Restrict form resize -- Delphi

    http://www.delphipages.com/forum/showthread.php?t=58391 Hi, How would I restrict a form from being r ...

  6. 1Password:让一个密码记住所有密码

    在这个信息大爆炸的时代,我们总有着各种各样的缘由,接触到各种各样的网站和爱屁屁,随之而来的,产生了大量的账号和密码. 每次新注册一个网站的时候,总会纠结一番:到底是新编一个密码呢?还是沿用之前的那一个 ...

  7. Ext Connection

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. 无线AP和无线路由器区别wifi热点

    转自:http://network.51cto.com/art/201310/413327.htm 就像很多用户很容易混淆无线上网卡和无线网卡一样,很多用户也分不清无线AP和无线路由,小峰便是其中的一 ...

  9. 关于textiled的设置透明度的问题

    如果textfield的背景色设置的是黑色的话, 然后设置它的透明度为0.3, 就会显示出半透明的效果, 这时如果用键盘输入时, 会显示不出来输入的字体. 因为: textfield的字体默认也是黑色 ...

  10. 《Pro JavaScript Techniques》中的一些函数

    //获取元素的样式值. function getStyle(elem, name) { if (elem.style[name]) { return elem.style[name]; } else ...