Ubuntu 8.04下的vim改造和cscope的配置(初步)

 Ubuntu 8.04下的vim改造和cscope的配置

http://www.lupaworld.com/?uid-131820-action-viewspace-itemid-117908

 

我原来一直使用Source Insight走读代码的,(在Ubuntu下安装vmware,虚拟一台Windows XP的机器,通过samba共享Ubuntu的文件),最近被微软教育了一下,觉得不能再用盗版的了。因此用vim + cscope替代Source Insight。 网上对于vim+cscope有好多的介绍,不过感觉写的不够简单,不太适合初学者,因此在这里详细地介绍一下。

   Ubuntu 8.04缺省安装的vim是一个基本(tiny)版本,如果输入“:syntax on”,会提示不支持,如果用它看源代码,当然很不爽。因此可以在Synaptic Package Manager中选择"vim" "vim-common" "vim-doc" "vim-runtime"包,安装之。然后在/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的功能还是非常强大的。

  Ubuntu 8.04的vim是支持cscope的。

  首先在Synaptic Package Manager中安装cscope的包。

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

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

  然后就ok了。

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

  举个例子:看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()语句上 ,敲入<c-/>s (敲入ctrl+/的组合键  然后再敲s),下面提示出两个cscope的tag,敲入1,就跳转到了do_basic_setup()的函数定义处。

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




  刚才演示的只是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,定义了这些命令的键盘快捷键,刚才演示的<c-/>s (敲入ctrl+/的组合键  然后再敲s)组合,即实现查找C语言符号的命令,就定义在下面的第一行。你也可以自己修改,定制自己的快捷键。

    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("<cfile>")<CR><CR>
    nmap <C-/>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
    nmap <C-/>d :cs find d <C-R>=expand("<cword>")<CR><CR>

你可能感兴趣的:(vmware,manager,ubuntu,vim,basic,语言)