背景

windows环境开发+linux交叉编译的开发模式,代码阅读和编写都用的source-insight。 除了检索,跳转,工程构建等方面,sourceinsight自带了一些宏语言,可以轻松实现快捷键的文件头,函数头的插入,固定代码的插入, 工作中,sourceinsight已经可以满足要求了。

但是,出于以下两点的考虑,还是决定要熟练下vim下的使用:

  1. linux环境下开发居多,后期可能要完全linux下开发,vim+插件的模式更为通用,一旦掌握,可以自己根据实际情况配置调整,不用总是折腾IDE;

  2. 效率方面有优势,实际观察同事使用,上手以后,各种操作可以高效完成,深度自定义;

ctags+cscope部署

介绍

ctags用来生成标签,用于符号的定位和查找 cscope提供交互式查询的功能,支持检索调用函数,被调用函数,头文件包含等等操作

安装

http://ctags.sourceforge.net/

http://cscope.sourceforge.net/

配置

.vimrc中增加一些常用操作的快捷键映射

ctags配置

"ctrl+f12生成tags文件

map <C-F12> :!ctags -R --c++-kinds=+p —fields=+iaS --extra=+q .<CR>

cscope配置

''查找c代码符号

nmap <C-l>s :cs find s <C-R>=expand("<cword>")<CR><CR>

''查找本定义

nmap <C-l>g :cs find g <C-R>=expand("<cword>")<CR><CR>

"查找本函数调用的函数

nmap <C-l>c :cs find c <C-R>=expand("<cword>")<CR><CR>

"查找本字符串

nmap <C-l>t :cs find t <C-R>=expand("<cword>")<CR><CR>

"查找本grep模式

nmap <C-l>e :cs find e <C-R>=expand("<cword>")<CR><CR>

"查找本文件

nmap <C-l>f :cs find f <C-R>=expand("<cfile>")<CR><CR>

"查找包含本文件的文件

nmap <C-l>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>

"查找本函数调用的函数

nmap <C-l>d :cs find d <C-R>=expand("<cword>")<CR><CR>

使用

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q生成tags文件

cscope –Rbkq 生成cscope数据库

遇到的问题

“ctags添加系统调用”

Ctags负责进行生成代码标记的索引,cscope支持对c代码的查找和定位(对c++和java有一定的限制)。 用下面的命令可以将系统调用也建立索引,开发时可以直接看到系统函数的实现(.vimrc也需要做对应修改,添加systags的目录到tags变量): ctags -R -I __THROW -I __attribute_pure__ -I __nonnull -I __attribute__ --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/systags /usr/include/

“catgs没有-R选项怎么办?”

自带的Ctags版本可能不对,GNUEmacs那个版本不支持-R操作,解决方法是:从“http://ctags.sourceforge.net/” 下了一份源码重装后即解决了问题,更新后的ctags版本信息如下: Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert Compiled: Jul 3 2016, 10:48:45 Addresses: , Exuberant Ctags Optional compiled features: +wildcards, +regex

ctags+cscope替换sourceinsight的更多相关文章

  1. Sublime Text + CTags + Cscope (部分替代Source Insight)

    CTags & cscope 下载: CTags+Cscope --- 我的百度云盘下载http://pan.baidu.com/s/1gfyPnuN ctags58.zip --- src ...

  2. Linux 核心阅读工具vim+ctags+cscope+taglist

    今天.介绍vim+ctags+cscope+taglist的内核阅读配置. 当使用过之后,我相信大部分人都会舍弃之前的Eclipse(我就是活生生的一个样例).我们先来看看实现的界面是怎么样的: 我们 ...

  3. sublime text2+Ctags+Cscope替代Source Insight

    说明:以Windows系统下查看C++代码为例.因为Source Insight(以下简称SI)是收费软件,且界面丑陋,所以考虑其替代方案,发现Sublime Text3(以下简称ST3) + Cta ...

  4. VIM+ctags+cscope

    VIM+ctags+cscope用法: http://blog.csdn.net/hnllei/article/details/7407124 http://blog.csdn.net/luckywa ...

  5. vim与ctags/cscope的完美结合

    1. 安装vim/ctags/cscope ctag 2. 在源码根目录下执行 sudo ctags -R .   会生成tags文件,里面包含着整个源码目录下的符号信息. 3. 直接到达某个符号(比 ...

  6. vim牛逼的code工具: ctags+ cscope

    自己总结 在我的工作目录里的.vimrc中做了这样的配置:   set tags=tags;   set autochdir 在项目根目录里利用"sudo ctags -R *", ...

  7. 【转】使用 vim + ctags + cscope + taglist 阅读源码

    原文网址:http://my.oschina.net/u/554995/blog/59927 最近,准备跟学长一起往 linux kernel 的门里瞧瞧里面的世界,虽然我们知道门就在那,但我们还得找 ...

  8. 【ctags/cscope/project安装使用】给神编辑器vim添加新的翅膀

    本文地址 分享提纲: 1.安装 2.使用cscope 3.使用project 1.安装 1.1)linux(yum下安装) yum -y install cscope 1.2)linux(unbunt ...

  9. Vim+Ctags+Cscope安装

    对比了下,感觉还是Vim比较专业. 一:使用说明: ‘/’查找忽略大小写,比如需要查找“book”,当输入/b的时候会自动找到第一个以"b"开头的单词 实现C程序的缩减 查询中自由 ...

随机推荐

  1. 2018.8.4session的removeAttribute()和invalidate()的区别

    session的removeAttribute()和invalidate()的区别 session.invalidate()是销毁跟用户关联session,例如有的用户强制关闭浏览器,而跟踪用户的信息 ...

  2. 2017.10.13 Java中引用类型变量的创建及使用&循环高级写法

    今日内容介绍 1.引用类型变量的创建及使用 2.流程控制语句之选择语句 3.流程控制语句之循环语句 4.循环高级 ###01创建引用类型变量公式     * A: 创建引用类型变量公式         ...

  3. 复杂链表的复制 -python编写

    题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否 ...

  4. autofac 的好博文

    https://www.cnblogs.com/neverc/p/4914091.html#e https://www.cnblogs.com/stulzq/p/8547839.html

  5. Java 压缩文件夹工具类(包含解压)

    依赖jar <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons ...

  6. java设计模式——外观模式(门面模式)

    一. 定义与类型 定义:门面模式,提供一个统一的接口,用来访问子系统中的一群接口,门面模式定义了一个高层接口,让子系统更容易使用 类型:结构性 二. 使用场景 子系统越来越复杂,增加外观模式提供简单调 ...

  7. Android笔记(adb命令--reboot loader)

    Android 的机器通过adb进入升级模式的方法 # adb shell # reboot loader 通过上面两个命令就进入升级模式了,通过工具升级就好了 为什么会写这简单的一篇呢?因为今天干了 ...

  8. rcnn spp_net hcp

    rcnn开创性工作,但是计算时间太长,重复计算太大. spp_net将重复计算避免了. hcp是yan shuicheng那边的,是用bing生成regions,然后用normalized cut将这 ...

  9. http2.2配置

    http: 超文本传输协议,工作在应用层 CentOS 6程序环境:httpd-2.2 配置文件: /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.con ...

  10. js点击获取标签里面id属性

    <html xmlns="http://www.w3.org/1999/xhtml"> <head > <title></title> ...