Vim代码浏览插件-cscope(2)
2012-12-03 11:42
239 查看
Vim代码浏览插件-cscope(2)
发表于 2011年 03 月 13 日 由 admin
5. 在Vim中使用cscope
一般情况下,大多数系统中使用的Vim发行版均已缺省支持cscope了,无需手工编译安装。保险起见,可使用以下命令验证安装的Vim版本是否支持cscopevim --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的入门指导:TheVim/Cscope tutorial。
cscope官网还给出一个Vim中cscope快捷键映射。下载后放入Vim插件文件夹(~/.vim/plugin)下就可使用快捷键来控制cscope。当然,也可以使用Vim中的map/nmap命令自定义快捷键。
此条目发表在 others, Unix-like 分类目录,贴了 plugin, vim 标签。将固定链接加入收藏夹。
相关文章推荐
- Vim代码浏览插件-cscope(1)
- Vim升华之源代码结构浏览插件Taglist安装图解
- vim中浏览c++代码使用ctags和cscope进行函数跳转时vimrc的配置
- vim代码搜索插件配置
- inux下代码阅读 -- 配置vim+ctags+taglist+cscope
- Vim 中文件目录浏览插件——NERD tree
- vim + cscope/ctags/minibuf 查看分析代码
- [BKM]在Solaris上使用 vim + cscope 浏览内核源代码
- vim ctags cscope lookupfile插件(包括如何自动生成索引tag、自动查找索引tag)
- Linux编辑环境vim插件:cscope
- linux下代码阅读 -- 配置vim+ctags+taglist+cscope
- vim插件cscope安装
- VIM 代码片段插件 ultisnips 使用教程
- Vim实现代码浏览、索引、标签、标记、检索
- vim cscope 插件使用
- 学习ns2过程中,如何在vim中使用cscope高效阅读代码
- 解决使用vim-go插件时候保存go代码导致设置好的折叠消失的问题
- Vim 中文件目录浏览插件——NERD tree
- coreutils学习——vim插件(cscope、ctags、taglist)
- vim + cscope/ctags 查看分析代码