您的位置:首页 > 编程语言

Vim代码浏览插件-cscope(2)

2012-12-03 11:42 239 查看


Vim代码浏览插件-cscope(2)

发表于 2011
年 03 月 13 日 由 admin


5. 在Vim中使用cscope

一般情况下,大多数系统中使用的Vim发行版均已缺省支持cscope了,无需手工编译安装。保险起见,可使用以下命令验证安装的Vim版本是否支持cscope

vim --version |grep cscope

如果输出为空,则需要下载Vim源代码,带"--enable-cscope"选项手工编译并重新安装。


5.1 vim中的cscope命令

Vim中,cscope的命令都是通过:cs[cope]+子命令+参数完成。命令:scs[cope],:lcs[cope]用法与:cscope基本相同,区别在于前者会将将cscope的操作结果放置到一个分割窗口中;后者在使用了伴置选项'cscopequickfix'时会使用当前窗口而不是quickfix窗口来显示搜索结果。

:cs[cope]可用的子命令有:add/find/kill/help/reset/show共6条。


5.1.1 add子命令

add子命令用来为cscope添加一个新的数据库连接(交叉引用数据源)。

命令语法

:cs add {file|dir} [pre-path] [flags]

参数

[pre-path] 使用 -P [pre-path] 选项

[flags] cscope 传递额外的选项

例:

:cscope add /usr/local/cdb/cscope.out

:cscope add /projects/vim/cscope.out /usr/local/vim

:cscope add cscope.out /usr/local/vim -C


5.1.2 find子命令

find子命令用来实现查询符号/函数/字符串等。cscope独立模式中的所有查找功能,find子命令可完成除更改检索模式外的其他功能。

语法:

:cs find {querytype} {name}

参数:

querytype : 控制台接口编号或nvi缺省命令:

0或s : 查找指定符号(symbol)

1或g : 查找指定定义(global defination)(

2或d : 查找指定函数调用的函数(called)

3或c : 查找调用了指定函数的函数(calls)

4或t : 查找指定字符串(text)

6或e : 查找指定egrep模式

7或f : 查找指定文件(file)

8或i : 查找包含指定文件的文件(includes)

name : 查询对象名字

除了4和6之外的查找类型将略忽略name之前的空格。4和6在querytype和name之间只能有一个空格分隔。多余的空格将被认作name的一部分。

例:

查找调用了vim_free的函数:

:cscope find c vim_free

:cscope find 3 vim_free

查找字符串"initOnce"

:cscope find t initOnce

查找字符串" initOnce"(t后的第一个字符' '被当作分隔符,其余空格被作为待查找字符串的一部分)

:cscope find t initOnce


5.1.3 help子命令

help子命令用来得到得到一个简洁的帮助。

语法:

:cs help


5.1.4 kill子命令

kill子命令用来中断一个或所有cscope的数据源连接。

语法:

:cs kill {num|partial_name}

要终止一个连接,需要给出连接号或者部分的连接名称。部分名称可以是数据库文件路径的任何一部分。如果给定的连接号是-1,那么所有的cscope连接都会被终止。


5.1.5 reset子命令

reset子命令重新初始化所有连接。

语法:

:cs reset


5.1.6 show子命令

show子命令显示当前的所有数据源连接。

语法:

:cs show


5.2 cscope选项

Vim中可使用:set命令动态设置cscope选项。这些设置,也可以写入Vim配置文件中。某些cscope选项,仅在Vim起动时设置有效。

cscopeprg或缩写csprg:
指定用来执行cscope命令的程序。缺省值为"cscope"。

例::set csprg=/usr/local/bin/cscope

cscopequickfix 或csqf :
设定是否使用quickfix窗口来显示cscope搜索结果。此选项仅在编译时使用有"+quickfix"选项时有效。

此选项的设置值为一组使用','分隔的标志。每个标志位由一个开关(+/-/0)加一个表示cscope查找子命令的字母(s/g/d/c/t/e/f/i)组成。

开关项含义:

+ : 子命令搜方向盘结果需添加至quickfix窗口显示

- : 从quickfix窗口中清楚子命令上次的搜索结果

0 : 子命令不使用quickfix窗口显示。cscopequickfix选项中未设定的子命令,其查找结果也不使用quickfix窗口



:set cscopequickfix=s-,c-,d-,i-,t-,e-

cscopetag或cst :
Vim内置命令:tag,Ctrl-],及命令行vim -t是否使用cscope查找。设定cst选项,意味着同时搜索cscope数据库和标签库



:set cst

:set nocst

cscopetagorder或缩写csto :
决定命令:cstag搜索的次序。

0 : 优先搜索cscope数据库,未找到匹配项后搜索标签库

1 : 优选搜索标签库,未找到匹配项后搜索cscope数据库

cscopeverbose或csverb : 是否给出添加cscope数据库成功与否信息



:set csverb

:set nocsverb

cscopepathcomp或cspc :
指定显示文件路径的多少(目录的每一级和文件名本身都被看作一个部分)。0则显示文件全路径;1则仅显示文件名


5.3 推荐配置

cscope推荐将以下设定脚本放置到Vim配置文件中(.vimrc)

if has("cscope")

set csprg=/usr/local/bin/cscope

set csto=0

set cst

set nocsverb

" add any database in current directory

if filereadable("cscope.out")

cs add cscope.out

" else add database pointed to by environment

elseif $CSCOPE_DB != ""

cs add $CSCOPE_DB

endif

set csverb

endif

以上配置中,指定Vim命令:tag,Ctrl-]和命令行vim -t使用cscope完成。优选查找cscope数据库,添加数据源时不给出成功与否信息。此外,配置指定Vim启动时,如果当前工作路径下存在数据源cscope.out则自动加载,若当前工作路径下不存在数据源文件,则加载用户可能通过环境变量CSCOPE_DB所指定的数据源。


5. 其他

如何在Vim中使用cscope的详细帮助信息,可以在Vim中使用命令:help cscope获取。cscope官网上也给出一篇在Vim中使用cscope的入门指导:The
Vim/Cscope tutorial。

cscope官网还给出一个Vim中cscope快捷键映射。下载后放入Vim插件文件夹(~/.vim/plugin)下就可使用快捷键来控制cscope。当然,也可以使用Vim中的map/nmap命令自定义快捷键。

此条目发表在 others, Unix-like 分类目录,贴了 plugin, vim 标签。将固定链接加入收藏夹。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: