vim+ctags+cscope配合使用阅读源码
2011-12-05 15:13
579 查看
在阅读源码的时候一个好的工具能使效率提高很多。在这,关于工具我就不多说了,vim+ctags+cscope,我这里主要想介绍一下,这个组合工具的一些使用技巧,这里有从网上找到了(在此,谢谢那些前辈们的辛劳),也有自己积累的,总之,记录下来吧。 cscope的工作需要vim、ctags的配合,它们都是基于命令行的。 下面只是给出了三种工具的常用方法,更多功能可查看man手册,或者官方文档。 一、Vim 参考:http://oss.lzu.edu.cn/modules/lifetype/index.php?op=ViewArticle&articleId=1014&blogId=1 二、Ctags 安装: aptitude install ctags 在源代码根目录下执行 ctags -r 命令用来为程序源代码生成标签文件,其-r选项表示递 归操作,同时为子目录也生成标签文件。vim利用生成的标签文件,可以进行相应检索、并 在不同的文件C语言元素之间来回切换。 在vim中ctags的简单使用 1) 跳转到指定的函数进入vim后,用 “:tag func_name“ 跳到函数func_name处。使用tag 命令时,可以使用TAB键进行匹配查找,继续按TAB键向下切换。 某个函数有多个定义时 :tag 跳到第一个定义处,优先跳转到当前文件 :tnext 跳到第一个 :tfirst 跳到前count个 :[count]tprevious 跳到后count个 :[count]tnext 跳到最后一个 :tlast 你也可以在所有tagname中选择: :tselect tagname 如果想跳到包含block的标识符:“tag /block” 然后用TAB键来选择。这里'/'就是告诉vim 'block'是一个语句块标签。 2)用“CTRL + ]“快捷键,跳转到光标所在函数标识符的定义处。 3)使用“CTRL + T”退回上层。如果想在以write_开头的标识符中选择一下, :tselect /^ write_ 这里,'^'表示开头,同理,'$'表示末尾。多个同名的标识符 三、debian默认没有安装cscope 一、安装:atp-get install cscope 运行cscope命令,出现两个面板,上方是一个查找结果的显示面板,下方是一个查找条件 指定面板。使用TAB键在两个面板间切换,也可使用上下左右方向件和翻页键在同一面板内 贴换位置。选中显示面板的某个项,回车即可进入该文件,这是调用vim打开文件,这时就 可以结合ctags使用了。当然也可以直接使用vim打开文件,结合ctags阅读源码。 使用前,必须现使用“cscope-indexer -r”命令递归生成索引信息文件。特殊情况下,还需 要用户使用find命令,主动生成索引信息文件,并指定给cscope工具。 cscope提供了如下 九种查询方式: Find this C symbol: #查找指定的C符号 Find this global definition: #查找指定的全局定义 Find functions called by this function: #查找指定函数调用的函数 Find functions calling this function: #查找调用指定函数的函数 Find this text string: #查找字符串 Change this text string: #修改指定字符串 Find this egrep pattern: #查找匹配字符 Find this file: #查找指定文件 Find files #including this file: #指定引用头文件进行查找 在对应某一项中输入查找条件,回车即可进行查询,并将结果显示在显示面板。 K跳转到函数的man页 gg=G 按indent缩进格式化整个文件 == 格式化整行 =a{格式化当前{}程序块 gf 查找文件,在.vimrc中用set path=/u/infdev/**/**/** 来设置搜索路径 /* 折行功能可以将一节浓缩为一行, 只显示其大概. */ zo 打开折行 zc 关闭折叠 在编辑模式下用ctrl+o可以暂时进行命令模式 [{ 命令跳转到当前代码块的开头, ]} 会跳转到当前代码块的末尾. [[ 向前查找一个函数的开始 ]] 向后查找一个函数的开始 ][ 向前查找一个函数的结尾, [] 向后查找一个函数的结尾, { 到前一个空行上 } 到下一个空行上 # 到与当前单词相同的上一个单词上 * 到与当前单词相同的下一个单词上 % 可以让光标从它当前所在的括号跳转到与它相匹配的括号上去, CTRL+] 跳转tags定义的地方= ctrl+t返回调用tag的地方 gD 查询变量,只在本文件中 gd 查询变量, 只在本函数中 [i 查询变量的定义 [<Tab> 跳到变量定义的地方 set makeprg=nmake 后面nmake可自己定义,一般不用定义 :make 编译程序 :cnext 跳到下一个编译错误 :cc 看完整的错误信息 :clist 看所有错误信息 :e b<tab>在命令行用tab可以补全 按ctrl+d列出所有匹配 q: 列出命令窗口 Vim有一种记录宏的机制。你键入"qa"开始把一段宏记录入寄存器变量`a'中。按下来你可以象平常一样键入你要的操作,只是这些操作都会被Vim记录进它命名为`a'的宏中, 再次再下"q"键,就结束了宏`a'的录制。当你要重复执行你刚才记录的那些操作时只要使用"@a"命令。共有26个可用的寄存器供你记录宏。 二为代码生成数据库 2、首先需要为你的代码生成一个cscope数据库。生成数据库很简单,在你的项目根目录运行下面的命令: cscope -Rbq 如果不是c代码,使用: $ find ./ -name "*.c" -or -name "*.h" -or -name "*.cpp" -or -name "*.S" | cscope -Rbq 这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。 具体的参数的含义可以通过:man cscope 得到。-R: 在生成索引文件时,搜索子目录树中的代码 -b: 只生成索引文件,不进入cscope的界面 -q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度 -k: 在生成索引文件时,不搜索/usr/include目录 -i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件列表。 -I dir: 在-I选项指出的目录中查找头文件 -u: 扫描所有文件,重新生成交叉索引文件 三在VIM中使用cscope 1 、用vim编辑的时候: vim FILENAME.c 2 把生成的cscope文件导入到vim中来 :cs add /路径/cscope.out 代码所在目录 我习惯现切换到代码所在目录再操作,所以直接使用: :cs add cscope.out 就可以了。 3 查看是否已经连接到对应数据库 :cs s 4 cs f s xxxx 查找xxxx出现的地方,它能详细列出哪些文件的哪行的哪个函数引用,以及该行的内容. ,首先调用“cscope add”命令添加一个cscope数据库,然后就可以调用“cscopefind”命令进行查找了。VIM支持8种cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:csfind c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:cs find swork”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能。 s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方 g: 查找函数、宏、枚举等定义的位置。 cs f g main 光标跳到main函数的位置 d: 查找本函数调用的函数 cs f d main 列出main函数调用的函数,输入函数所对应的数字,就可以调到相应掉用的函数 c: 查找调用本函数的函数 cs f c main 会输出找到没有匹配的结果,因为没有函数调用main函数 t: 查找指定的字符串 cs f t STRING f: 查找并打开文件 还有在.vimrc下面加上了键盘映射 map <F8> :Tlist<CR> 这样就可以使用快捷键F8直接进入tlist模式了。这里注意<F8>和 : 之间有空格的。 在.vimrc下加入一下两行 set tags=tags; set autochdir 这样使用tags时可以首先在当前目录下查找tags文件,如果没有则转到父目录查找。依次向上。 |
相关文章推荐
- vim ctags cscope的配合使用阅读源码
- 使用vim+ctags+cscope阅读内核源码
- 使用vim+ctags+cscope阅读内核源码
- 使用 vim + ctags + cscope + taglist 阅读源码
- 使用 vim + ctags + cscope + taglist 阅读源码
- 使用vim+ctags+cscope阅读内核源码 --www.kerneltravel.net
- 使用 vim + ctags + cscope + taglist 阅读源码
- 使用vim+ctags+cscope阅读内核源码
- 使用 vim + ctags + cscope + taglist 阅读源码 - bo博的个人空间 - 开源中国社区
- 使用vim+ctags+cscope阅读内核源码
- 使用 vim + ctags + cscope + taglist 阅读源码 收藏 bo博 发表于 5年前 阅读 20197 收藏 14 点赞 4 评论 1 最近,准备跟学长一起
- 使用 vim + ctags + cscope + taglist 阅读源码
- 使用vim+ctags+cscope阅读内核源码
- 【转】使用 vim + ctags + cscope + taglist 阅读源码
- 使用 vim + ctags + cscope + taglist 阅读源码
- Linux 下阅读源码工具(Vim + ctags+Cscope)
- vim+ctags+cscope 打造Android源码阅读工具
- cscope和ctags配合vi阅读源码
- 内核源码阅读vim+cscope+ctags+taglist
- vim cscope的使用阅读源码