Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1522168
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: 嵌入式

2013-01-03 13:54:25

一.概述

        首先, vim+cscope+ctags真的很强大,对于一个在Linux下玩了近2年的我来说,我在此感到十分惭愧。我之前极少使用vim,没接触过 cscope和ctags,看程序也就用gedit和find。如今学习Linux内核时发现这3个工具非常有用,有了它们,我不用再在find之后的文 件列表里苦苦找寻某个函数或者某个变量的定义,而是很轻松地找到想要的东西,最重要的是,对学习Linux内核的信心大增。在此仅以简单的形式记录(不完 全,以后用到时再记录)这三个东东是怎么使用的,方便以后查询。

二.笔记

        首先安装 cscope,ctags

       apt-get install cscope ctags

        在Linux内核源码根目录下执行两条命令:make cscope和make tags,此时会在源码根目录下生成cscope.out和tags等几个文件。


1. #vim /path/filename

    如果filename文件存在则打开它,如果不存在则新建之。

2. 在命令模式下:

    :q 退出,:q!强制退出(不报存),:w 保存,:wq 保存并退出

    /string + Enter

    向前查找字符串string

    ?string + Enter

    向后查找字符串string

     n

     查找同一个字符串的下一个

     N

     反方向查找同一个字符串的前一个

     i

     进入编辑模式

     Esc按键

     退出编辑模式

     v

     进入可视模式

     在可视模式下,通过上,下,左,右键选中文本后:

     y表示复制

     p表示粘贴

     x表示剪切

     d表示删除

3. cscope使用

    :cs add cscope.out

    加载库文件,为后面利用cscope来查找做准备

    :cs help

   查看cscope命令的用法,输入后,显示如下

   add  :添加一个新的数据库             (用法: add file|dir [pre-path] [flags])
   find :查询一个模式                        (用法: find c|d|e|f|g|i|s|t name)
       c:找到调用这个函数的函数
       d:找到被这个函数调用的函数
       e:找到这个 egrep 模式
       f:找到此文件夹
       g:找到这个定义
       i:找文件 #包括这个文件
       s:找到这个 C 符号
       t:找到对其的赋值
    help :显示此信息                       (用法: help)
    kill :结束一个连接                      (用法: kill #)
    reset:重置所有连接                   (用法: reset)
    show :显示连接                         (用法: show)

  

     比如说要找调用test函数的函数,则输入:

    :cs find c test

4. catgs使用

     在命令模式下:

     ctrl + ] :找到光标所在位置的标签的定义

     ctrl + t :回到跳转之前的标签处

     “找到tag:1/3或更多”其他定义的查看方法:

     :tselect 显示列表

      然后输入相应的数字后回车再查找

     : tag definition

      跳转到definition定义处(可以是函数名,变量),即使它在另一个文件中


5. 为避免每次都输入那么多命令,可使用
cscope_maps.vim 插件

下载cscope_maps.vim文件,并将其copy到~/.vim/plugin目录下。


在~/.vimrc 中定义了这些命令的键盘快捷键,s (敲入ctrl+A的组合键  然后再敲s)组合,即实现查找C语言符号的命令,就定义在下面的第一行。你也可以自己修改,定制自己的快捷键。

    nmap s :cs find s =expand("")
    nmap g :cs find g =expand("")
    nmap c :cs find c =expand("")
    nmap t :cs find t =expand("")
    nmap e :cs find e =expand("")
    nmap f :cs find f =expand("")
    nmap i :cs find i ^=expand("")$
    nmap d :cs find d =expand("")


使用前在代码的目录下敲入 cscope -Rb,然后用vim看代码就可以使用cscope的功能了。


 ubuntu:~ $ cd kernel/linux-2.6.26/init/
 ubuntu:~/kernel/linux-2.6.26/init$ cscope -Rb
 ubuntu:~/kernel/linux-2.6.26/init$ vim main.c

  在vim中将光标移到 do_basic_setup()语句上 ,敲入s (敲入ctrl+A的组合键  然后再敲s),下面提示出两个cscope的tag,敲入1,就跳转到了do_basic_setup()的函数定义处。

  如果要返回到刚才的位置,再敲入Ctrl-t就可以了。

原文链接:
http://www.cnblogs.com/lknlfy/archive/2012/05/06/2485998.html
http://blog.163.com/sunshine_linting/blog/static/4489332320116234512574/
阅读(703) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~