玩转vim之vim插件-cscope

2023-11-22 05:08
文章标签 vim 玩转 插件 cscope

本文主要是介绍玩转vim之vim插件-cscope,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

玩转vimvim插件-cscope

Cscope

介绍

cscope 是一个 C 语言的浏览工具,通过这个工具可以很方便地找到某个函数或变量的定义位置、被调用的位置等信息。目前支持 C C++cscope 自身带一个基于文本的用户界面,不过 gvim 提供了cscope接口,因此可以在 gvim 中调用 cscope,方便快捷地浏览源代码。

  Cscope是一个类似ctags的工具。 你可以把它想作是超过频的ctags,因为它功能比ctags强大很多。 在 Vim里,通过cscope查询结果来跳转就象跳转到其他的标签完全一样;它被保存在标签栈里。这样你就可以象使用tags一样在函数等等之间便捷的跳转。在VIM中使用cscope非常简单,首先调用“cscopeadd”命令添加一个cscope数据库,然后就可以调用“cscopefind”命令进行查找了。VIM支持8cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:csfind c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:csfind swork”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能。

使用

Ctags一样, 要使用其功能必须先为你的代码生成一个cscope的数据库, 在项目的根目录运行下面的命令:

cscope –Rbkq

 R 表示把所有子目录里的文件也建立索引

 b 表示cscope不启动自带的用户界面,而仅仅建立符号数据库

q 生成cscope.in.outcscope.po.out文件,加快cscope的索引速度

 k 在生成索引文件时,不搜索/usr/include目录

如果单纯使用cscope –R会直接进入cursesGUI界面,问你需要查找什么东东。在这种模式下,可用的快捷键为:

l  ctrl+d 退出

l  tab 在结果与搜索菜单之间移动

l  ctrl+p 前一项(对搜索结果和菜单项都适用)

l  ctrl+n 后一项(对搜索结果和菜单项都适用)

l  enter:显示搜索结果并打开vi编辑器

# 此后会生成三个文件

cscope.in.out
cscope.out
cscope.po.out

进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令:

:cs add /path/cscope.out /path/vim71

上面这条命令很重要, 必须写全, 不能只写前半句:

:cs add /path/cscope.out

因为源码是多级目录的, 如果这样写, cscope是无法在子目录中的源码中工作的, 当然, 如果你的源码都在同一级目录中就无所谓了. 如果你要经常用cscope的话, 可以把上面那句加到~/.vimrc中去.

使用cs find 查找

(也可以简化写成 cs f)后面添加需要得字符串类型:

  c:Find functions calling this function//查找调用本函数的函数

  d:Find functions called by this function //查找本函数调用的函数

  e:Find this egrep pattern//查找egrep模式,相当于egrep功能,但查找速度快多了

  f:Find this file //查找并打开文件,类似vimfind功能

  g:Find this definition//查找函数、宏、枚举等定义的位置,类似ctags的功能

  i:Find files #including this file //查找包含本文件的文件

  s:Find this C symbol //查找C语言符号,即查找函数名、宏、枚举值等出现的地方

  t:Find assignments to //查找指定的字符串

例如:使用cscope查找do_fork函数的定义,vim命令行下执行 :cs f g do_fork

 

Cscope 默认只支持C, lex, yacc 文件 (.c, .h, .l, .y) ,如果还要它索引其它类型的怎么办? 那就需要 cscope.files 帮忙

cscope 在大型项目上的应用

对于大型代码库,cscope是个特别有用的工具,它可以帮助你做快速且有针对性的搜索从而比你手动用grep搜索要节省很多时间,比如linux kernel

这篇关于玩转vim之vim插件-cscope的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/407716

相关文章

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

centos 6安装 vim

centos 安装vim 1.首先查询当前当前vim所依赖的包存在不存在.检查缺少哪个几个依赖包 [root@bogon firstCopy]# rpm -qa|grep vivimvim-common-7.4.160-5.el7.x86_64vim-enhanced-7.4.160-5.el7.x86_64vim-filesystem-7.4.160-5.el7.x86_64vim-

秒变高手:玩转CentOS 7软件更换的方法大全

在 CentOS 7 中更换软件源可以通过以下步骤完成。更换源可以加快软件包的下载速度,特别是当默认源速度较慢时。以下是详细步骤: 前言 为了帮助您解决在使用CentOS 7安装不了软件速度慢的问题,我们推出了这份由浪浪云赞助的教程——“CentOS7如何更换软件源加快下载速度”。 浪浪云,以他们卓越的弹性计算、云存储和网络服务受到广泛好评,他们的支持和帮助使得我们可以将最前沿的技术知识分

eclipse安装subversion(SVN)版本控制插件

陈科肇 查看插件更新站点 网址:http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA 网站截图: 根据自己的eclipse版本,选择需要的更新站点. 使用eclipse集成subservion插件 Help > Install New Software…> 等待下载安装插件…

Weex入门教程之2,Android Studio安装Weex插件

插件位置及描述 https://plugins.jetbrains.com/idea/plugin/8460-weex 貌似对windows还不是很支持,先放着吧。 安装 插件功能 先预览下都有什么功能 安装完成Weex插件后,如果在main toolbar找不到这些功能图标,那么就需要手动添加到main toolbar 添加到main toolbar 红框内就是

文本编辑器-Vim

http://www.vim.org/ 简单介绍 Vim是一种高度可配置的文本编辑器,用于创建和更改任何类型的文本非常高效。它与大多数UNIX系统和苹果OS X一起被列为 “vi”。 Vim是稳定的,并且不断被开发以变得更好。 其功能包括: 1. 持久的,多级的撤消树 2. 广泛的插件系统 3. 支持数百种编程语言和文件格式 4. 强大的搜索和替换 5. 与许多工具集成 下载

mybatis框架基础以及自定义插件开发

文章目录 框架概览框架预览MyBatis框架的核心组件MyBatis框架的工作原理MyBatis框架的配置MyBatis框架的最佳实践 自定义插件开发1. 添加依赖2. 创建插件类3. 配置插件4. 启动类中注册插件5. 测试插件 参考文献 框架概览 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射,为开发者提供了极大的灵活性和便利性。以下是关于M

PrestaShop免费模块/插件/扩展/工具下载

PrestaShop免费模块/插件/扩展/工具下载 PrestaShop免费模块 适用于您的电子商务网站的PrestaShop模块 现有超过3,000个PrestaShop模块可帮助您自定义在线商店,增加流量,提高转化率并建立客户忠诚度。 使您的电子商务网站成功! 下载(超过142+之多的PrestaShop官网认证的免费模块) 标签PrestaShop免费, PrestaShop免费工