VIM+ctags+cscope用法

Unity与IOS交互,调用IOS系统相机和相册 与IOS的交互,在步骤上要比android简单许多,不会产生因为系统版本,或者包名导致的许多问题。过程中最头疼的一个问题是IOS回调Unity,很简单的一个问题,搞了半天。 阅读详情

Vim+cscope+ctags+tags阅读源代码

作者: 许 振文

linux源代码提供了制作cscope索引文件和tags文件的make命令。

一,软件安装

先安装cscope:

sudo apt-get install cscope

在安装ctags:
http://ctags.sourceforge.net/

可以使用:ctags –version来查看当前ctags的版本是否是emacs的。
要是安装了emacs的话就必须使用上面这个地址的ctags,vim不支持emacs的ctags,所以要下载安装这个ctags,下载之后在源文件所 在目录运行:

helight@helight-desktop:~/Desktop/ctags-5.7$  ./configure
helight@helight-desktop:~/Desktop/ctags-5.7$ make

即可生成ctags文件,将这个文件保存到“/usr/bin/”目录下即可。

二,生成索引文件

在源代码目录下使用一下两条命令即可生成cscope索引文件和tags文件。

helight@helight-desktop:~/Downloads/linux-2.6.26$ make cscope
FILELST cscope.files
MAKE cscope.out
helight@helight-desktop:~/Downloads/linux-2.6.26$ make tags
MAKE tags
helight@helight-desktop:~/Downloads/linux-2.6.26$ ls tags -l
-rw-r–r– 1 helight ftp 69274841 2008-09-27 11:04 tags
helight@helight-desktop:~/Downloads/linux-2.6.26$ ls cscope.* -l
-rw-r–r– 1 helight ftp 23814144 2008-09-25 20:08 cscope.in.out
-rw-r–r– 1 helight ftp 609665 2008-09-25 20:06 cscope.list
-rw-r–r– 1 helight ftp 174470617 2008-09-25 20:08 cscope.out
-rw-r–r— 1 helight ftp 124973256 2008-09-25 20:08 cscope.po.out

 

三,一般源文件中生成索引文件

为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件:

#!/bin/sh
find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files
cscope -bkq -i cscope.files
ctags -R


这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。
其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。
这个脚本,首先使用find命令,查找当前目录及子目录中所有后缀名为".h", ".c"和".c"的文件,并把查找结果重定向到文件cscope.files中。 然后cscope根据cscope.files中的所有文件,生成符号索引文件。最后一条命令使用ctags命令,生成一个tags文件,在vim中执 行":help tags"命令查询它的用法。它可以和cscope一起使用。上面所用到的命令参数,含义如下:
-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件时,不搜索/usr/include目录
-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件 列表。
-I dir: 在-I选项指出的目录中查找头文件
-u: 扫描所有文件,重新生成交叉索引文件
-C: 在搜索时忽略大小写
-P path: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

四,在VIM使用cscope查找

1,加载cscope.out文件
在VIM中使用cscope非常简单,首先调用“cscope add”命令添加一个cscope数据库,然后就可以调用“cscope find”命令进行查找了。VIM支持8种cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:cs find c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:cs find s work”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可 以输入一个正则表达式,这类似于egrep程序的功能。
在源代码目录下打开vim。要使用cscope查找就必须加载cscope.out文件.在vim命令行下执行:

:cs add cscope.out

在vim命令行下执行:

:cs help
cscope commands:
add : Add a new database (Usage: add file|dir [pre-path] [flags])
find : Query for a pattern (Usage: find c|d|e|f|g|i|s|t name)
c: Find functions calling this function
d: Find functions called by this function
e: Find this egrep pattern
f: Find this file
g: Find this definition
i: Find files #including this file
s: Find this C symbol
t: Find assignments to
help : Show this message (Usage: help)
kill : Kill a connection (Usage: kill #)
reset: Reinit all connections (Usage: reset)
show : Show connections (Usage: show)


s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文

2,使用cscope查找do_fork函数的定义:
在vim命令行下执行:

:cs f g do_fork

五,在VIM中使用tags查找符号:

在vim命令行下执行:

:tag xxx

即可找到你想找的函数或是数据结构或是函数xxx
关于tags的其它用法可以在vim中执行”:help tags”命令进行查询。

六,其它命令介绍:

ctrl+]:在函数调用的地方跳转到函数定义的地方
ctrl+t:返回上一个查找的地方

七,特别注意:

所生成的cscope.out和tags文件要在打开VIM所在的文件夹,否则VIM无法找到相关符号信息。

VS code 调试显示preLaunchTask“g++“已终止,退出代码为-1。 生成‘... .exe‘文件错误 总结: 以后每个工程都需要按照这样的流程:创建一个.c/.cpp文件 -> F5运行 -> 配置tasks.json文件-> launch.json文件 -> 运行 阅读详情

相关推荐

Coursera | 离散数学概论(北大)| quiz答案

Coursera离散数学概论quiz答案Week1:数理逻辑:基本概念Week2:数理逻辑:命题逻辑及形式系统Week3:数理逻辑:谓词逻辑及形式系统Week4:集合论:集合代数   先放下Coursera上找的离散数学部分相关课程:   btw.线上学习拿证书还有很多,MOOC、edm等都可。   博主选了北京大学离散数学概论Discrete Mathematics Generality。Mooc上貌似也有,但是上课时间貌似不如Coursera灵活,Coursera时间自己调度,规定时间上完即可。目前课

小鱼干的博客 4126

vim+cscope+ctags

vim+ctags+cscope使用简单说明

tombaby_come的博客 943

Ubuntu 20.04 LTS下5分钟搞定ONLYOFFICE协作空间社区版(Docker版保姆级教程)

本文提供了一份在Ubuntu 20.04 LTS系统上,通过Docker快速部署ONLYOFFICE协作空间社区版的保姆级教程。内容涵盖从系统准备、Docker环境搭建,到执行自动化安装脚本、完成Web初始化的全流程,并详细说明了部署后的安全配置、数据备份及基本运维要点,帮助用户高效构建私有、安全、可控的团队文档协作平台。

weixin_28826961的博客 261

vim + ctags + cscope

vim + ctags + cscope

M120674的专栏 1930

无人机通信电台--XBee-PRO 900HP (S3B)

XBee PRO S3B也称为XBee-900HP无线模块,它是一款工作在频段900~928MHz之间,基于FHSS跳频技术的远距离无线数传电台核心模块。常用型号如下: 类别 型号 开发套件 XKB9-DMT-UHP XBee-PRO 900HP (S3B) DigiMesh模块,200Kbps,软天线 XBP9B-DMWT-002 XBee-PRO 900HP (S3B)...

low米的博客 4505

【UE5_蓝图】实时音频采集与动态WAV文件保存实战指南

本文详细介绍了在UE5中使用蓝图实现实时音频采集与动态WAV文件保存的完整流程。从插件配置、录音框架搭建到动态文件名生成和音频参数优化,提供了实用技巧和常见问题解决方案,特别适合需要快速实现音频采集功能的开发者。

weixin_29009669的博客 407

vim + ctags + cscope = 强大的IDE

vim + ctags + cscope = 强大的IDE1.看代码需求的功能2. 插件简介2.1 ctags 和 cscope 的功能2.1 安装插件2.2 插件的使用方式3. 如何在vim中快捷地使用ctags以及cscope3.1 快捷生成tags以及cscope.out3.2 配置vim开启时加载插件所需文件3.3 快捷使用 刚开始工作的时候要使用 Linux 系统,不会安装 VS,就安了一个 Source Insight 用来看代码。小白的我把整个项目加载到 Source Insight 里面,

泡视界的博客 7705

RK3568 上C图像camera图像采集应用实例(二)

本文探索rk3568上实现C语言的 通过C v4l2 接口 采集图像 ,刷屏控制 drm的显示camera图像中 实现camera preview 预览 的实践和探索。

luoshanxuli2010的专栏 760

vim+ctags+cscope 用法

如果你现在对ctags和cscope等并不了解, 那么请先花上大约至少一天上的时间认真研究他们的基本用法. 等到对他们有了基本的了解之后再回来看这里的说明你将会有更大的收获.     首先要说的是ctags是一个linux上很普遍的源码分析工具, 可以将代码中的函数变量等定义的位置记录在一个名称为tags的文件. 类似于数据库记录功能. tags文件的产出最简单的方法是在需要生成tags的

halazi100 1331

LPDDR6与LPDDR5 State Diagram技术探讨

LPDDR6与LPDDR5 State Diagram技术探讨

zilan23的博客 1176

华为OD机试 - 末世分配资源包 - 二分查找 + 贪心(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。末世时代,政府为各地方配资源,现有资源分配表 nums[n],要求按如下规则分配给 k 个营地:在最优平均分配情况下,得到最大团队所获得的资源数4,3,6,9,7 216最佳划分之一:[4,3,6] -> 13 [9,7] -> 16最大

学Java,找哪吒 223

使用vim + ctags + cscope在Linux中阅读代码

为了方便在Linux下,快速阅读修改代码,可以使用vim+ctags+cscope的方式。

qq_43570266的博客 1597

基于Simulink的PID控制汽车巡航控制系统建模与仿真

汽车巡航控制系统(Cruise Control System)是一种通过自动调节发动机输出功率来维持车辆以恒定速度行驶的技术。这种系统能够减轻驾驶员在长途驾驶中的疲劳,同时提高燃油经济性和行车安全性。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于汽车巡航控制系统中。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的汽车巡航控制系统,重点研究PID参数调优方法、系统动态响应特性以及稳态误差消除能力。

MHD0815的博客 196

vim ctags cscope 用法

好长时间没有上来更新了, 今天趁老板不再上来休闲一下. 本章要说的是和vim的tags相关的内容. 之所以在跳转之后就说明tags是因为这个功能相当的重要和实用. 好的东西自然是需要提前分享的.   首先, 要说的是关于vim使用ctags, cscope的相关教程, 网络上已经有相当详尽的文章可以搜索到. 这里不会在重复大多数网络上可以搜索到的入门教程了. 并且在此提醒阅读本篇博客的读者,

kang99827765的专栏 7803

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux下编译cscope,Ubuntu下代码查看小妙招-vim ctags cscope的简单用法

是不是刚安装上Ubuntu发现vim没有语法高亮显示、而别人的是头文件、变量……都有特定的颜色表示而郁闷。是不是常常为编译器提示某某某头文件找不到和忘记了某个函数的原型而去翻砖头那么厚的书而烦恼,呵呵,这些都是小问题。这里介绍一些小方法解决这些问题。首先解决不能显示语法高亮的问题:可能你也知道去掉/etc/vim/vimrc文件中的“"syntax on “前面的双引号就能开启语法高亮,可是开了这...

weixin_36380063的博客 181

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

代码查看小妙招--vim ctags cscope的简单用法

作者:曹忠明,华清远见嵌入式学院讲师。是不是刚安装上ubuntu发现vim没有语法高亮显示、而别人的是头文件、变量……都有特定的颜色表示而郁闷。是不是常常为编译器提示某某某头文件找不到和忘记了某个函数的原型而去翻砖头那么厚的书而烦恼,呵呵,这些都是小问题。这里介绍一些小方法解决这些问题。首先解决不能显示语法高亮的问题:可能你也知道去掉/etc/vim/vimrc文件中的“"syntax

华清远见 | 程序员的学习天堂 1323

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

cscope精准查看linux函数调用,Ubuntu下代码查看小妙招--vim ctags cscope的简单用法

是不是刚安装上Ubuntu发现vim没有语法高亮显示、而别人的是头文件、变量……都有特定的颜色表示而郁闷。是不是常常为编译器提示某某某头文件找不到和忘记了某个函数的原型而去翻砖头那么厚的书而烦恼,呵呵,这些都是小问题。这里介绍一些小方法解决这些问题。首先解决不能显示语法高亮的问题:可能你也知道去掉/etc/vim/vimrc文件中的“"syntax on “前面的双引号就能开启语法高亮,可是开了这...

weixin_39964978的博客 258

ubuntu下代码查看小妙招--vim ctags cscope的简单用法

是不是刚安装上ubuntu发现vim没有语法高亮显示、而别人的是头文件、变量……都有特定的颜色表示而郁闷。是不是常常为编译器提示某某某头文件找不到和忘记了某个函数的原型而去翻砖头那么厚的书而烦恼,呵呵,这些都是小问题。这里介绍一些小方法解决这些问题。 首先解决不能显示语法高亮的问题: 可能你也知道去掉/etc/vim/vimrc文件中的“"syntax on “前面的双引号就能开启语法高亮,可...

weixin_30877493的博客 102

使用vim+ctags+cscope阅读内核源码

有网络的时候,使用LXR(The Linux Cross Referencer)在线阅读源码固然是一件很爽的事情。在无网络的情况下,只通过vim进入内核源码那样查找就显得有些勉强。接下来,本文将介绍一种快速定位源码的工具:ctags和cscope。通过vim编辑器,再配合使用上述两种工具就可以快速定位想要查看的源码。好了,开始吧! 1.下载最新内核源码包,解压至主目录下 接下来的步骤当

u012029502的专栏 577

vim: ctags cscope taglist使用快速掌握

vim有用的环境变量设置: set smarttab(使用shiftwidth的值) set tabstop=4 set number set ruler set nowrap set hlsearch set autoindent set cindent shiftwidth=4 set softtabstop=4 set expandtab filetype indent

ancoo的专栏 519

vim cscope java_【转】Cscope的使用(领略Vim + Cscope的强大魅力)

【转】Cscope的使用(领略Vim + Cscope的强大魅力)1、Cscope介绍Cscope是类似于ctags一样的工具,但可以认为她是ctags的增强版,因为她比ctags能够做更多的事。在Vim中,通过cscope的查 询,跳转到指定的地方就像跳转到任何标签;她能够保存标签栈,所以通过合适的键盘映射绑定,你能够在函数向后或向前跳转,就像通常使用的tags一样。首次使用Cscope时,他会...

weixin_31849185的博客 223
上一篇: Emacs 增添标签栏
下一篇: cscope 在emacs里的使用
amicablehj
博客等级 码龄19年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值