Chinaunix首页 | 论坛 | 博客
  • 博客访问: 437957
  • 博文数量: 75
  • 博客积分: 556
  • 博客等级: 中士
  • 技术积分: 712
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 10:10
文章分类
文章存档

2015年(4)

2014年(4)

2013年(31)

2012年(8)

2011年(8)

2010年(20)

分类: LINUX

2013-09-17 17:42:57

转自:http://blog.163.com/sunshine_linting/blog/static/4489332320116234512574/

1.安装vim。然后在/etc/vim/vimrc中做一些修改,将原来注释掉的一些配置打开(即删除双引号),添加一些功能的设置。
   打开语法高亮显示
  :syntax on 

  当重新打开文件时,自动跳转当上次结束编辑的位置
  if has("autocmd")
    au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
      \| exe "normal g'\"" | endif
  endif

  vim的使用网上有"vim-handbook-cn-71.pdf"的中文使用书,翻译地非常好,可以用它来学习vim。vim的功能还是非常强大的。

2.在Synaptic Package Manager中安装cscope的包。

  然后敲入下面的命令:
  mkdir ~/.vim
  mkdir ~/.vim/plugin

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

  然后就ok了。

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

3.
举个例子:看linux 内核的 init/main.c文件的do_basic_setup()函数的定义。

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

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

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

4.刚才演示的只是cscope的一个功能,其他的功能如下:

 cscope的用法 :cs find {querytype} {name} 

{querytype} 为下面的命令字 

0 或 s: 查找该C语言符号 
1 或 g: 查找定义 
2 或 d: 查找本函数调用的函数 
3 或 c: 查找调用指定函数的函数 
4 或 t: 查找字符串 
6 或 e: 查找 egrep 模式 
7 或 f: 查找文件 
8 或 i: 查找包含指定文件的文件 


  这些都是命令行的命令,敲起来太慢,在刚才我们配置的cscope_maps.vim,定义了这些命令的键盘快捷键,刚才演示的s (敲入ctrl+\的组合键  然后再敲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("")

5.vim Help文件(中文):  
   强烈建议VIM的初学者,主要是害怕读英文Help文件的朋友阅读!翻译的非常好,在此感谢译者ZhaoRuFei。
   vimdoc项目的主页在: ,有时间可以去看看
  vim主页:
   这个网站不用介绍了吧。
  vim资源收集: 
   linux forum上的一个网友收集的vim资源,相当不错。
  cscope主页:
   cscope的主页,程序员的利器。
  cscope与vim入门:
  使用cscope管理大软件项目:
  vim实用技术:
   IBM developerWork上的文章,初学者可以一看。
  vim group:
   google上的vim group,不过人气还不是很旺。

6.

Cscope安装

  可以在下载源码包,然后解压,编译安装。

./configure

make

make install

 

生成Cscope数据库

  使用cscope前,必须为代码生成一个cscope数据库。假设当前代码在/usr/src/linux目录下,则运行下列命令。

cd /usr/src/linux

cscope –Rbq

  然后会生成3个文件:cscope.in.out,cscope.out,cscope.po.out。

  用vim打开代码文件,将刚才生成的cscope文件导入到vim中。

vim init/main.c

:cs add /usr/src/linux/cscope.out /usr/src/linux

  也可以将下面语句添加到vim的配置文件.vimrc中。

if fileradable("cscope.out")     cs add csope.out elseif $CSCOPE_DB  != ""     cs add $CSCOPE_DB endif

 

Cscope的功能

  Cscope的功能通过它的子命令“find”来实现。

cs find c|d|e|g|f|i|s|t name

  • s:查找C代码符号
  • g:查找本定义
  • d:查找本函数调用的函数
  • c:查找调用本函数的函数
  • t:查找本字符串
  • e:查找本egrep模式
  • f:查找本文件
  • i:查找包含本文件的文件

  可以在.vimrc中添加下面的快捷键,免得每次都要输入一长串命令。

nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR> nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR> nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR> nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR> nmap <C-@>f :cs find f <C-R>=expand("<cword>")<CR><CR> nmap <C-@>i :cs find i ^<C-R>=expand("<cword>")<CR>$<CR> nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>

  使用时,将光标停留在要查找的对象上,按下g,即先按“Ctrl+@”,然后很快再按“g”,将会查找该对象的定义。

阅读(4606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~