Vim Cscope配置与使用
1、Cscope介绍
Cscope是类似于ctags一样的工具,但可以认为她是ctags的增强版,因为她比ctags能够做更多的事。在Vim中,通过cscope的查询,跳转到指定的地方就像跳转到任何标签;她能够保存标签栈,所以通过合适的键盘映射绑定,你能够在函数向后或向前跳转,就像通常使用的tags一样。
首次使用Cscope时,他会根据源文件生成符号数据库。然后在以后的使用中,cscope只是在源文件有改动或源文件列表不同时才会重建数据库。当在重建数据库时,未改动过的文件对应的数据库信息会从旧的数据库中拷贝过来,所以会使重建数据库快于一开始的新建数据库。
当你在命令行下调用cscope时,你会获得一个全屏选择窗口,能够使你查询特定的内容。然而,一旦你查询的有匹配,那么就会用你默认的编辑器来编辑该源文件,但是你不能够简单的使用Ctrl+]或者:tag命令来从一个标签跳转到另一个标签。
Vim中的cscope接口是通过以命令行形式调用完成的,然后解析查询返回的结果。最终的结果就是cscope查询结果就像通常的tags一样,这样你就可以自由跳转,就像在使用通常的tags(用ctrl+]或者:tag跳转)
2、Cscope安装
apt-get install cscope
或者在网站下载
3、Cscope配置
修改vim配置文件vimrc.你可以修改/etc/vimrc使用所有用户都使用本配置文件,当然你还可以修改~/.vimrc
将如下内容放置到你的.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
通过设置’cscopetag’,我们已经有效的将所有:tag的情况都替换为:cstag。这包括:tag、ctrl+],和”vim -t”。然后,正常的tag命令就会不光在tag文件中查找,也会在cscope数据库中查找。
注:
遇到错误
cs_read_prompt EOF: 没有那个文件或目录
E609: Cscope 错误: sh: 1: exec: /usr/local/bin/cscope: not found
则将第二行注释即可,即 " set csprg=/usr/local/bin/cscope
一些经常用cscope查找(使用”:cs find”)是查找调用某一特定函数的所有函数,和查找所有出现特定C符号的地方。为了做这些事,你可以使用如下的键盘映射作为例子:
map g<C-]> :cs find 3 <C-R>=expand(“<cword>”)<CR><CR>
map g<C-/> :cs find 0 <C-R>=expand(“<cword>”)<CR><CR>
这些给ctrl+](右中括号)和ctrl+/(反斜杠)的映射可以允许你将光标放置到函数名称或者C符号上然后执行快速cscope查找匹配。
你可以使用如下方案(很好用,可以将其添加到.vimrc中):
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
3、Cscope索引
建立cscope使用的索引文件
1. 在你需要浏览源码的根目录下(如你想用cscope看linux源码)使用下面命令:
2. * #: cscope -Rbkq<回车>
3. R 表示把所有子目录里的文件也建立索引
4. b 表示cscope不启动自带的用户界面,而仅仅建立符号数据库
5. q生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
6. k在生成索引文件时,不搜索/usr/include目录
然后在~/vimrc中增加一句:
:setcscopequickfix=s-,c-,d-,i-,t-,e- |
这个是设定是否使用 quickfix 窗口来显示 cscope 结果, 用法在后面会说到。
跟Ctags一样, 要使用其功能必须先为你的代码生成一个cscope的数据库, 在项目的根目录运行下面的命令
:csadd /home/wooin/vim71/cscope.out /home/wooin/vim71
源码是多级目录的, 如果这样写, cscope是无法在子目录中的源码中工作的, 当然, 如果你的源码都在同一级目录中就无所谓了.如果你要经常用cscope的话, 可以把上面那句加到~/.vimrc中去.
更多cscope命令可打开一个vim文件中查看
help :显示一个简短的摘要。
使用方法:
:cs help
后续补充说不定会更新。。。
Vim Cscope配置与使用相关推荐
- 【从入门到进阶】vim基础配置+ 常用插件(NERDTree, cscope, rainbow等)
文章目录 前言 一.vim基础配置 二.常用插件 2.1 Vundle 2.1.1 Vundle安装 2.1.2 Vundle配置 2.1.3 安装插件 2.1.4 Vundle常用指令 2.2 NE ...
- vim+cscope+ctags打造属于自己的IDE
所谓工欲善其事,必先利其器.作为专业码农,特别是长期在Unix系统上展开工作(查看源代码.coding)的码农,没有一个极致的IDE环境,工作效率会很受影响的.当然啥时候Unix系统如果有Visual ...
- vim + cscope + kscope
2019独角兽企业重金招聘Python工程师标准>>> z 1. vim阅读代码 添加cscope符号索引数据库后,可以调用"cscope find"命令 ...
- vim cscope java_在Vim(gvim)中使用cscope
之前已经详细的介绍了在 vim中使用ctags ,这篇文章我们就来详细介绍一下如何在vim中使用cscope. 首先,我们还是了解一下什么是cscope.简单来讲,cscope主要用来协助浏览C/C+ ...
- Vim的配置和高级使用
Vim的配置和高级使用 前言 一.代码编辑器介绍 1.1 vim 1.2 Eclipse 1.3 Brackets 1.4 Emacs 1.5 LightTable 1.6 Chocolat 1.7 ...
- 【vim编辑器配置】Linux / Ubuntu 傻瓜式配置 vim + 功能齐全 + 方便好用
[vim编辑器配置]Linux / Ubuntu 傻瓜式配置vim + 功能齐全 + 方便好用 本文主要讲述, Linux/Ubuntu系统如何配置vim,让其变得高端大气上档次,皮实好用功能全. W ...
- ubuntu下vim的配置
写在前面,我写本文的目的不在于教大家怎么来配置VIM,因为我是新手,我也是参考了各位前辈的方法,在此只是记录一下过程,当然我个人觉得更重要的是心得体会.其实大家可能也发觉,国内的抄袭转载现象很严重,基 ...
- [转] vim自定义配置 和 在ubnetu中安装vim
Ubuntu 12.04安装vim和配置 问题: ubuntu默认没有安装vim,出现: jyg@ubuntu:~$ vim test.c The program 'vim' can be found ...
- 用Vim编程——配置与技巧
本文介绍如何用强大的文本编辑器 Vim编程.只要配置得当,效果堪比一个IDE. 配置 基本配置: "开启语法高亮 syntax on "依文件类型设置自动缩进 filetype i ...
最新文章
- java录排名怎么写_面试官:Java排名靠前的工具类你都用过哪些?
- 【进程】进程通信-共享内存
- 【转】Google Maps Android API V2的使用及问题解决
- jpa oracle 传参int类型判空_springboot学习-springboot使用spring-data-jpa操作MySQL数据库...
- python3 logging模块_python3中使用logging模块写日志,中文乱码,如何解决?
- Oracle 1204 RAC failover 测试 (六)
- 虚拟机安装菜鸟教程(2)——CentOS8系统安装 网络 时间配置
- 当try和finally都包含return时
- LeetCode 56. 合并区间(合并区间+排序)
- 开源库、jar包(要不要重新制造轮子)—— C/C++、Java、Python
- [笔记][随笔]近期小结
- Java8初体验(一)lambda表达式语法
- Tomcat安装与卸载
- 偷窥桌面程序和IE浏览器的密码编辑框
- 全年无限次免费畅读电子书,这份大礼包你想不想要?
- SHAPE 文件格式详解
- Entry name ‘META-INF/androidx.vectordrawable_vectordrawable.version‘ collided
- 37个项目!2020年5G+智慧灯杆项目落地情况大汇总
- Git 修改 commit author
- 苹果手机android设备可以删除吗,手机系统自带软件怎么卸载?苹果/安卓软件卸载攻略...