vim 中配置cscope功能
2012-12-14 11:33
183 查看
1.cscope的配置
vim配置文件vimrc.你可以修改/etc/vimrc使用所有用户都使用本配置文件,当然你还可以修改~/.vimrc下载配置文件:cscope_map.vim把cscope_map.vim里从ifhas("cscope")到endif里边的内容复制到/etc/vimrc里边去,如果找不到cscope_map.vim自己写进去,网上找下大概配置
先在~/vimrc中增加一句: :setcscopequickfix=s-,c-,d-,i-,t-,e- 这个是设定是否使用quickfix窗口来显示cscope结果,用法在后面会说到。 跟Ctags一样,要使用其功能必须先为你的代码生成一个cscope的数据库,在项目的根目录运行下面的命令:
进入vim的vimrc所在路径
$cd/home/wooin/vim71/ $cscope-Rbq #此后会生成三个文件 $llcscope.* -rw-rw-r--1wooinwooin1.1M2007-09-3010:56cscope.in.out -rw-rw-r--1wooinwooin6.7M2007-09-3010:56cscope.out -rw-rw-r--1wooinwooin5.1M2007-09-3010:56cscope.po.out #打开文件,开始Coding $cdsrc $vimain.c 进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来,用下面的命令: :csadd/home/wooin/vim71/cscope.out/home/wooin/vim71 上面这条命令很重要,必须写全,不能只写前半句: :csadd/home/wooin/vim71/cscope.out 因为源码是多级目录的,如果这样写,cscope是无法在子目录中的源码中工作的,当然,如果你的源码都在同一级目录中就无所谓了.如果你要经常用cscope的话,可以把上面那句加到~/.vimrc中去. 下面我们来操练一下,查找函数vim_strsave()的定义,用命令: :csfindgvim_strsave 按下回车后会自动跳转到vim_strsave()的定义处.此时你肯定会说Ctags也可以做到这个呀,那么下面说的这个Ctags就无法做到了,我想查找vim_strsave()到底在那些地方被调用过了,用命令: :csfindcvim_strsave 按下回车后vim会自动跳转到第一个符合要求的地方,并且在命令栏显示有多少符合要求的结果 如果自动跳转的位置你不满意,想看其他的结果,可以用下面的命令打开QuickFix窗口: :cw 这时你就可以慢慢挑选了^_^ cscope的主要功能是通过同的子命令"find"来实现的 "cscopefind"的用法: csfindc|d|e|f|g|i|s|tname 0或s 查找本C符号(可以跳过注释) 1或g 查找本定义 2或d 查找本函数调用的函数 3或c 查找调用本函数的函数 4或t 查找本字符串 6或e 查找本egrep模式 7或f 查找本文件 8或i 查找包含本文件的文件 如果每次查找都要输入一长串命令的话还真是件讨人厌的事情,Cscope的帮助手册中推荐了一些快捷键的用法,下面是其中一组,也是我用的,将下面的内容添加到~/.vimrc中,并重启vim: nmap<C-_>s:csfinds<C-R>=expand("<cword>")<CR><CR> nmap<C-_>g:csfindg<C-R>=expand("<cword>")<CR><CR> nmap<C-_>c:csfindc<C-R>=expand("<cword>")<CR><CR> nmap<C-_>t:csfindt<C-R>=expand("<cword>")<CR><CR> nmap<C-_>e:csfinde<C-R>=expand("<cword>")<CR><CR> nmap<C-_>f:csfindf<C-R>=expand("<cfile>")<CR><CR> nmap<C-_>i:csfindi^<C-R>=expand("<cfile>")<CR>$<CR> nmap<C-_>d:csfindd<C-R>=expand("<cword>")<CR><CR> 当光标停在某个你要查找的词上时,按下<C-_>g,就是查找该对象的定义,其他的同理. 按这种组合键有一点技巧,按了<C-_>后要马上按下一个键,否则屏幕一闪就回到nomal状态了 <C-_>g的按法是先按"Ctrl+Shift+-",然后很快再按"g" 很奇怪,其中的这句: nmap<C-_>i:csfindi^<C-R>=expand("<cfile>")<CR>$<CR> 在我的vim中无法工作,但是我改成: nmap<C-_>i:csfindi<C-R>=expand("<cfile>")<CR><CR> 就可以正常工作了,不知道是什么原因?有哪位朋友知道请告诉我. cscope的其他功能你可以通过帮助手册自己慢慢学习 reset:重新初始化所有连接。 用法:csreset
2.3、Cscope使用
2.3.1、建立cscope使用的索引文件 2.3.1.1在你需要浏览源码的根目录下(如你想用cscope看linux源码)使用下面命令: #:cscope-Rbkq<回车> 2.3.1.2R表示把所有子目录里的文件也建立索引 2.3.1.3b表示cscope不启动自带的用户界面,而仅仅建立符号数据库 2.3.1.4q生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度 2.3.1.5k在生成索引文件时,不搜索/usr/include目录 2.3.2、使用csfind查找[3](也可以简化写成csf)后面添加需要得字符串类型: c:Findfunctionscallingthisfunction//查找调用本函数的函数 d:Findfunctionscalledbythisfunction//查找本函数调用的函数 e:Findthisegreppattern//查找egrep模式,相当于egrep功能,但查找速度快多了 f:Findthisfile//查找并打开文件,类似vim的find功能 g:Findthisdefinition//查找函数、宏、枚举等定义的位置,类似ctags的功能 i:Findfiles#includingthisfile//查找包含本文件的文件 s:FindthisCsymbol//查找C语言符号,即查找函数名、宏、枚举值等出现的地方 t:Findassignmentsto//查找指定的字符串 例如:使用cscope查找do_fork函数的定义,在vim命令行下执行:csfgdo_fork 2.3.3上面所有命令也可以配合按键及来实现 2.3.2.3.1Ctrl+\再按s表示:csfinds命令 2.3.1.3.2理实现csfind+g,d,c,t,e,f,i命令 2.3.2.4Cscope_map.vim说明: 2.3.2.4.1、有英文注释的我就不说明了,我就说一下里边的键map映射 2.3.2.4.2、如:nmap<C-\>s:csfinds<C-R>=expand("<cword>")<CR><CR> 2.3.2.4.2.1nmap表示在vim的普通模式下,即相对于:编辑模块和可视模式,以下是几种模式 :map普通,可视模式及操作符等待模式 :vmap可视模式 :omap操作符等待模式 :map!插入和命令行模式 :imap插入模式 :cmap命令行模式 2.3.2.4.2.2<C-\>表示:Ctrl+\s表示输入(即按:s)s 2.3.2.4.2.3:表示输入':' 2.3.2.4.2.4“csfinds"表示输入"csfinds"也即是要输入的命令 2.3.2.4.2.5<C-R>=expand("cword")总体是为了得到:光标下的 变量或函数。cword表示:cursorword,类似的还有:cfile表示光标所在处的文件名吧 2.3.2.4.2.6就是回车吧,不太清楚
相关文章推荐
- VIM 配置ctags/cscope 函数跳转
- windows上vim+tags+taglist+cscope配置
- VIM语法高亮、VIM代码补全、VIM结构化视图功能的配置实现
- 我的vim配置(Vim + Cscope + Ctags)
- Redhat 5 下vim 配置 +自动补全功能
- 简单教你配置高性能的vi编辑器(ctags+vim+cscope)
- vim中浏览c++代码使用ctags和cscope进行函数跳转时vimrc的配置
- VIM语法高亮、VIM代码补全、VIM结构化视图功能的配置实现
- vim下配置cscope
- 简单教你配置高性能的vi编辑器(ctags+vim+cscope)
- xshell中配置vim常用的功能(设置行号等)
- vim配置笔记 - NERDTree的Bookmark功能
- 我的vim配置(Vim + Cscope + Ctags)
- 改写vim配置文件vimrc来实现显示行号,语法高亮,自动缩进功能
- vim、ctags、cscope配置及使用
- windows下 配置vim 使用 cscope 实现 php函数定位
- Vim配置(常用配置+Cscope+taglist)
- Vim Cscope配置与使用
- 20_Shell语言―――VIM编辑器基础知识三之窗口属性定制、配置文件及查找替换功能
- vim ctags cscope 配置