Chinaunix首页 | 论坛 | 博客
  • 博客访问: 586314
  • 博文数量: 192
  • 博客积分: 3780
  • 博客等级: 中校
  • 技术积分: 1487
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-26 10:11
文章存档

2012年(6)

2011年(160)

2010年(26)

分类: 嵌入式

2011-03-04 08:56:45

Ctags

1、安装ctagssudo aptitude insatll ctags

2、生成索引文件,在代码目录下执行:ctags –R (或者ctags –R * 

-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此tags文件。Tags文件中包括这些对象的列表:

#define定义的宏;⑵枚举型变量的值;⑶函数的定义、原型和声明;⑷名字空间(namespace);⑸类型定义(typedefs);⑹变量(包括定义和声明);⑺类(class)、结构(struct)、枚举类型(enum)和联合(union);⑻类、结构和联合中成员变量或函数

VIM用这个“tags”文件来定位上面这些做了标记的对象。

3、在Linux源代码目录下查看main

vim –t main

打开定义“main”(变量或函数或其它)的文件,并把光标定位到这一行。如果这个变量或函数有多处定义,在VI命令行模式“:ts”命令就能列出一个列表供用户选择。    “:tp”为上一个tag标记文件,“:tn”为下一个tag标记文件。当然,若当前tags文件中用户所查找的变量或函数名只有一个,“:tp,:tn”命令不可用。

4、最方便的方法是把光标移到变量名或函数名上,然后按下“Ctrl+]”,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行。

5、用“Ctrl+t”可以退回原来的地方。即使用户使用了N次“Ctrl+]”查找了N个变量,按N次“Ctrl+t”也能回到最初打开的文件,它会按原路返回 。

用“Ctrl+t”可以退回原来的地方。即使用户使用了N次“Ctrl+]”查找了N个变量,按N次“Ctrl+t”也能回到最初打开的文件,它会按原路返回 。

6、你只需键入相应的数字(位于第一栏的)。 其它栏中的信息是为了帮你作出决策的。在多个匹配的tag之间移动,可以使用下面这些命令:

(ex command):

tfirst             go to first match

:[count]tprevious   go to [count] previous match

:[count]tnext       go to [count] next match

:tlast              go to last match

如果没有指定[count],默认是1

7、运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:settags=”命令设定“tags”文件的路径,这样vim才能找到“tags”文件。在完成编码时,可以手工删掉tags文件。

(ex command) :set tags=./tags, ./../tags, ./*/tags

这样的设置使Vim可以使用当前目录下的tags文件,上一级目录下的tags文件,以及当前目录下所有层级的子目录下的tags文件。这样可能会引入很多的tags文件,但还有可能不敷其用。比如说你正在编辑"~/proj/src"下的一个文件,但又想使用"~/proj/sub/tags"作为 tags文件。对这种Vim情况提供了一种深度搜索目录的形式。如下:(ex command) :set tags=~/proj/**/tags

8、命令补齐真是避免键入一个长tag名的好办法。只要输入开头的几个字符然后按下制表符:

       (ex command) :tag write_

Vim 会为你补全第一个符合的tag名。如果还不合你意,接着按制表符直到找到你要的。有时候你只记得一个tag名的片段,或者有几个tag开头相同。这里你可以用一个模式匹配来告诉Vim你要找的tag

假设你想跳转到一个包含"block"tag。首先键入命令:(ex command) :tag /block。现在使用命令补齐:按Vim会找到所有包含"block"tag并先提供给你第一个符合的。"/"告诉Vim下面的名字不是一五一十的tag名,而是一个搜索模式。通常的搜索技巧都可以用在这里。比如你有一个tag"write "开始:(ex command) :tselect / ^write_"^"表示这个tag"write_"开始。不然在半中间出现writetag也会被搜索到。同样"$"可以用于告诉Vim要查找的tag如何结束。

http://blog.chinaunix.net/u1/38775/showart_430847.html

http://blog.chinaunix.net/u2/79914/showart_1966746.html

Cscope

  1. 首先 vim --version | grep cscope,看看vim是否支持cscope,如果不支持需要重新安装vim(+号表示支持)

  2. sudo aptitude install cscope

  3. 在源代码目录下执行cscope Rbq(或者make cscope ARCH=x86 生产特定架构的索引)。生成cscope.filescscope.outcscope.out.incscope.out.po等索引信息文件。其中cscope.out.incscope.out.poq选项生成的。

-R: 在生成索引文件时,搜索子目录树中的代码

-b: 只生成索引文件,不进入cscope的界面

-q: 生成cscope.in.outcscope.po.out文件,加快cscope的索引速度

-k: 在生成索引文件时,不搜索/usr/include目录

-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件列表。

-I dir: -I选项指出的目录中查找头文件

-u: 扫描所有文件,重新生成交叉索引文件

-C: 在搜索时忽略大小写

-P path: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

  1. vim打开一个文件用vim编辑,输入cscope add cscope.out(可按TAB键选择)。命令添加一个cscope数据库,然后就可以调用“cscope find”命令进行查找了。VIM支持8cscope的查询功能。

  2. s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能

d: 查找本函数调用的函数

c: 查找调用本函数的函数

t: 查找指定的字符串

e: 查找egrep模式,相当于egrep功能,但查找速度快多了

f: 查找并打开文件,类似vimfind功能

i: 查找包含本文件的文

  1. 用“Ctrl+t”可以退回原来的地方。即使用户使用了N次“Ctrl+]”查找了N个变量,按N次“Ctrl+t”也能回到最初打开的文件,它会按原路返回 。

  2. :cscope help

http://blog.csdn.net/longxin007/archive/2007/11/09/1876564.aspx

阅读(757) | 评论(0) | 转发(0) |
0

上一篇:Android字体简述

下一篇:vim

给主人留下些什么吧!~~