背景

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. 问题 A: xiaoping学构造函数

    题目描述 xiaoping刚接触类的构造和析构函数,对于构造函数的编写比较困惑.zhuangzhuang给小平布置了一道题目,xiaoping苦思两天也无法解答,请你帮帮xiaoping吧. #inc ...

  2. 1012: A MST Problem

    1012: A MST Problem 时间限制: 1 Sec  内存限制: 32 MB提交: 63  解决: 33[提交][状态][讨论版][命题人:外部导入] 题目描述 It is just a ...

  3. 分类算法简介 基于R

    最近的关键字:分类算法,outlier detection, machine learning 简介: 此文将 k-means,decision tree,random forest,SVM(supp ...

  4. python-一切事物都是对象

    python:一切事物都是对象 开始接触python,在里面有一句话“一切事物都是对象”,那么如何来理解这句话呢,下面举简单的例子: a=1 b='hello't=(11,22,33) list1=[ ...

  5. 【洛谷P1090】合并果子

    合并果子 题目链接 贪心:每次先合并最小的两堆果子 用堆实现 #include<iostream> #include<cstdio> using namespace std; ...

  6. 第35章 WWDG—窗口看门狗—零死角玩转STM32-F429系列

    第35章     WWDG—窗口看门狗 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  7. System.IO 二

    接着上篇的来  System.IO FileSystemWatcher    指向这个签名的方法   可以监听目录发生了什么事件 例如: static void Main(string[] args) ...

  8. Windows的cmd命令查询指定端口占用的进程并关闭

    以端口8080为例: 1.查找对应的端口占用的进程:netstat  -aon|findstr  "8080"    ,找到占用8080端口对应的程序的PID号: 2.根据PID号 ...

  9. python__标准库 : 测试代码运行时间(timeit)

    用 timeit.Timer.timeit() 方法来测试代码的运行时间: from timeit import Timer def t1(): li = [] ): li.append(i) def ...

  10. 无序数组中第K大的数

    1. 排序法 时间复杂度 O(nlogn) 2. 使用一个大小为K的数组arr保存前K个最大的元素 遍历原数组,遇到大于arr最小值的元素时候,使用插入排序方法,插入这个元素 时间复杂度,遍历是 O( ...