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源代码的更多相关文章
-
〖Linux〗(2013.08.02)VIM74b+YouCompleteMe,VIM代码编辑器补全能手
1. 编译和安装vim74b(参考:http://t.cn/zQa8R7h ) sudo apt-get install -y hgsvn libncurses5-dev libgnome2-dev ...
-
在eclipse中查看android源代码
自己写了一个类MainAcvitivity extends Activity, 按F12(我把转到定义改成了F12的快捷键),转到Activity的定义,弹出下面这样的界面 就是说没有找到androi ...
-
[Android Pro] Android学习——在线查看android源代码的3种方式
原文:http://blog.csdn.net/chuekup/article/details/8067075 1. https://github.com/android 2. http://grep ...
-
http://www.blogjava.net/xylz/archive/2013/08/05/402405.html
http://www.blogjava.net/xylz/archive/2013/08/05/402405.html
-
http://www.cnblogs.com/flyoung2008/archive/2013/08/11/3251148.html
http://www.cnblogs.com/flyoung2008/archive/2013/08/11/3251148.html
-
linux下的二进制文件的编辑和查看
linux下的二进制文件的编辑和查看 http://blog.csdn.net/wangxiaoqin00007/article/details/6618003 一.在Linux下查看二进制文件的软件 ...
-
北京设计模式学习组bjdp.org第7次活动(2013.08.04)回顾会纪要
时间:2013.08.04,9am-7pm 地点:北京龙泉寺(北京凤凰岭风景区内) 参加人数:北京龙泉寺信息中心(20人).北京设计模式学习组(9人) 活动要点: 1)寺院巡礼:义工师兄带领参观寺院. ...
-
Linux学习总结(十四)—— 查看CPU信息
文章首发于[博客园-陈树义],点击跳转到原文Linux学习总结(十四)-- 查看CPU信息. Linux学习总结(十四)-- 查看CPU信息 商用服务器CPU最常用的是 Intel Xeon 系列,该 ...
-
Linux是cat、tail、head查看文件任意几行的数据
Linux是cat.tail.head查看文件任意几行的数据 一.使用cat.tail.head组合 1.查看最后100行的数据 cat filename | tail -n 100 2.查看100到 ...
随机推荐
-
Java之控制反转和依赖注入
1.简介 依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性,下面通过一个例子来引入这一概念. 2.案例 1)一般情况下的类耦合 Main.java public clas ...
-
20个C语言中常用宏定义总结
01: 防止一个头文件被重复包含 #ifndef COMDEF_H#define COMDEF_H//头文件内容#endif 02: 重新定义一些类型防止由于各种平台和编译器的不同,而产生的类型字节数 ...
-
Repeater分页
void BindData() { PagedDataSource pds = new PagedDataSource(); ...
-
addChildViewController 与 addSubview
在viewcontrollerA中, 如果想把controllerB.view添加进来, 可以用 addSubview, 但如果controllerB中有个事件, 使用到 self.navigatio ...
-
Linux学习 -- 常用命令
目录处理命令 ls mkdir rmdir pwd cd cp mv rm 文件处理命令 touch cat tac more less head tail 连接命令 ln 软连接 ln -s 类似于 ...
-
Quick Cocos2dx CCLuaStack has no member names &#39;loadChunksZip&#39;
demo进行了这么久,已经很久没有连真机调试一下了,昨天下午我旁边的家伙连真机调试出了很多问题,于是我也连真机调一下吧. 运行一下project.android里面的 build_native.bat ...
-
VSCode的Markdown All in One插件,列表选项卡只有3个空格的解决方案
Q: 在win10中,列表选项卡只有3个空格,非列表是正常的4个空格: A: 设置Markdown All in One的list.indentationSize: Thank You For yzh ...
-
SpringAop注解实现日志的存储
一.介绍 1.AOP的作用 在OOP中,正是这种分散在各处且与对象核心功能无关的代码(横切代码)的存在,使得模块复用难度增加.AOP则将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封 ...
-
关闭open页面时刷新父页面列表
var winObjEI = window.open("/Invoice/InvoiceViewEI?invoiceid=" + data.InvoiceId); ; //关闭op ...
-
Linux之磁盘分区
一.基础知识 1.磁盘分区 磁盘的分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个.且基本分区可以马 ...