目录
解压源代码,安装ctags,cscope
各个软件的版本
Vim的简单配置
在cscope界面中查询:
Vim中调用cscope进行查询(地行模式以及快捷键模式),
通过ctags实现查询(底行模式及快捷键)。
解压源代码,安装ctags,cscope
透过命令:sudo apt-get install ctags cscope这个命令安装这两个工具软件。
各个软件的版本
Ubuntu9.04环境下,vim版本7.2.79
Vim的简单配置
cscope在sourceforge的主页中有vim中使用cscope的方法,同时给出了一个vim 的配置文件
在cscope界面中查询:
在解压的内核源代码根目录中进行:
ctags –R 生成tags文件,在执行cscope –R ,生成cscope.out数据库文件并进入cscope界面。
在menu处也就是提示按什么方式查询的地方按下问号(?)给出提示
已经生成了tags和cscope.out文件后,不想再cscope界面中查询,而是直接在vim中调用cscope.out和ctags文件也可以,但是必须保证vim打开的文件同一个目录中有ctags和cscope.out文件。Ctags和cscope使用方法如下:
VIM使用cscope查
1,加载cscope.out文件
在VIM中使用cscope非常简单,首先调用“cscope add”命令添加一个cscope 数据库,然后就可以调用“c
scope find”命令进行查了。VIM支持8种cscope 的查询功能,如下:例如,我们想在代码中查调用work()函数的函数,我们可以输入:“:cs find c work”,回车后发现没有到匹配的功能,可能并没有函数调用work()。我们再输入“:cs find s work”,查这个符号出现的位置,现在vim 列出了这个符号出现的所有位置。我们还可以进行字符串查,它会双引号或单引号括起来的内容中查。还可以输入一个正则表达式,这类似于egrep程序的功能。
在源代码目录下打开vim。要使用cscope查就必须加载cscope.out文件.在vim命令行下执行:
:cs add cscope.out
在vim命令行下执行:
:cs help
cscope commands:
add : Add a new database (Usage: add file|dir [pre-path] [flags])
find : Query for a pattern (Usage: find c|d|e|f|g|i|s|t name) c: Find functions calling this function
d: Find functions called by this function
e: Find this egrep pattern
f: Find this file
g: Find this definition
i: Find files #including this file
s: Find this C symbol
t: Find assignments to
help : Show this message (Usage: help)
kill : Kill a connection (Usage: kill #)
reset: Reinit all connections (Usage: reset)
show : Show connections (Usage: show)
s:查C语言符号,即查函数名、宏、枚举值等出现的地方
g:查函数、宏、枚举等定义的位置,类似ctags所提供的功能
d:查本函数调用的函数
c:查调用本函数的函数
t:查指定的字符串
e:查egrep模式,相当于egrep功能,但查速度快多了
f:查并打开文件,类似vim的find功能
如何在vim中运行命令i:查包含本文件的文
当然在底行模式下介键入help 会弹出vim的帮助。
2,使用cscope查do_fork函数的定义:
在vim命令行下执行:
:cs f g do_fork
就可以查看do_fork的全局定义了。
cscope常用快捷键:
先按ctrl+\ 然后再按以下键:
1. c: 查该函数被调用的位置
2. d: 查该函数调用了哪些函数
3. e: 查指定的正规表达式f: 查指定的文件
4. g: 查指定标识符的定义位置
5. i: 查该文件在哪些地方被包含
6. s: 查指定标识符的使用位置
7.t: 查指定的文本字符串
在VIM中使用tags查
1) 跳转到指定的函数进入vim后,用“:tag func_name“跳到函数func_name 处。使用tag命令时,可以使用TAB键进行匹配查,继续按TAB键向下切换。某个函数有多个定义时
:tag
跳到第一个定义处,优先跳转到当前文件
:tnext
跳到第一个
:tfirst
跳到前count个
:[count]tpreviouss
跳到后count个
:[count]tnext
跳到最后一个
:tlast
你也可以在所有tagname中选择:
:tselect tagname
关于tags的其它用法可以在vim中执行”:help tags”命令进行查询。
在安装了cscope和ctags的情况下,以下命令特别好使,他们现在cscope.out 数据库中查,若没有则在ctags中查
ctrl+]:在函数调用的地方跳转到函数定义的地方
ctrl+t:返回上一个查的地方
首先在目录下建立cscope索引文件
find -name '*.c' > cscope.file
cscope -Rbkq
这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。
其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。
上面所用到的命令参数,含义如下:
-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-k: 在生成索引文件时,不搜索/usr/include目录
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
如果只希望Cscope 关联起所有的.c 文件,那么可以直接到工程的根目录下,输入:
$ cscope -Rbq
-R 表示递归地把所有子文件夹中的source file 也关联进来
-b 表示只建立数据库文件cscope.out,不进入Cscope 的GUI 界面
-q 会建立两个额外的'inverted index' file:cscope.in.out 和cscope.po.out,以加快查的速度
如果不希望把/usr/include 中被工程文件包含的.h 文件关联进来,就加-k
如果要关联其他类型的文件(如.cpp、.java等),就需要我们自己先生成一个cscope.files,把所有我们希望关联进去的文件都列在里面:
$ find /home/edelweiss/nbd/nbd-2.9.15/ -name '*.c' -o -name '*.cpp' -o -name '*.h' \
> /home/edelweiss/cscope.files
注意查的路径一定要写成绝对路径,这样才能保证写入到cscope.files 文件中的也是绝对路径。
之后就可以根据cscope.files 建立数据库了:
$ cscope -bq -i /home/edelweiss/cscope.files
ctag 和cscope 的使用
都要在当前目录下,即你要查的代码目录下。
ctag使用:
命令:ctags –R 生成tags文件
Cscope使用:
命令:find -name '*.c' -o -name '*.h' -o -name '*.cpp'>cscope.file
cscope -Rbkq
在源代码文件中:vim命令进入后执行
:cs add cscope.out
只能在当前目录下使用vim命令时实现函数跳转(有cscope.out的目录)
Vim 命令打开的文件,显示的时候分屏命令:
水平分屏命令为(:sp文件路径和文件名)
垂直分屏命令为(:vs 文件路径和文件名)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。