Unix上看代码的环境搭建

    最近一段时间,发觉使用source insight看代码有点不太方便,主要是修改代码和debug的时候,puttysource insight窗口要来回切换,非常麻烦。研究了一下配置Unix平台下的开发环境,感觉还不错,基本可以实现source insight的一些重要功能。
主要用到的软件: vim + ctags + taglist + cscope + minibufexpl + project + Tree + FileTree
 
1vim
      vim –version | grep cscope会出现支持软件列表
      vim支持cscope,在配置文件应该列出来
       ./configure –enable-cscope
       make
     
       % 用来匹配一对(){}<>
       g=gg  美化所有代码
       v 然后选定范围,美化选定代码
       gg 行首、G 行末
    ......
      
2ctags
      ./configure – make – make install
      ctags –R
      Ctrl-]  跳转到callee(函数定义)
      Ctrl-t  跳转回caller
      来回切换Call Stack
 
3taglist
      下载taglist_41.zip
      解压之后存放到home dir/.vim/plugin.vim/doc
      如何使用
      编辑~/.vimrc,加入: map :TlistToggle
      这样,就可以在vim中用[F3]打开taglist窗口,察看tags并在tags间跳转了。
      ctrl+w,w可以 在taglist和代码窗口间切换。
      本质上,这是对于split window的操作
             Ctrl-W w      窗口轮流切换
            Ctrl-W +      扩大窗口 Ctrl-W +   扩大窗口num行)
            Ctrl-W -       缩小窗口
            Ctrl-W h      移动到窗口左边
            Ctrl-W j       移动到窗口下边
            Ctrl-W k      移动到窗口上边
            Ctrl-W l       移动到窗口右边
 
4cscope
    cscope的编译和安装没有特别之处,./configure - make - make install即可。
    http://vcd.gro.clinux.org/doc/if_cscop.html   中文User Manual
    vim中使用并不需要进行太多的设置,不过首先vim编译时必须加入了cscope的支持
    根据文档的建议,在~/.vimrc中加入以下内容:
    if has("cscope")
         set csto=0
         set cst
         set nocsverb
         if filereadable("cscope.out")
                 cs add cscope.out $PWD
 
         $PWD必须加在后面,否则的话,如果cscope bR是在一个相对路径上执行,则产生的cstag会使用相对路径,这样会导致vim打不开。因为,在vim中,:vi file_dir是一个相对于当前打开文件的路径,而在cscope bR中出现的是相对运行cscope bR的路径,所以必定打不开。cs add path1 path2path2必须用$PWD来作为绝对路径的开头,$PWD必定是运行vim ./path/???.ccurrent working dir
 
         elseif $CSCOPE_DBPATH != ""
                 cs add $CSCOPE_DBPATH $CSCOPE_DBPATH
         endif
         set csverb
    endif
 
        nmap s :scs find s =expand("")
        nmap g :scs find g =expand("")
        nmap c :scs find c =expand("")
        nmap t :scs find t =expand("")
        nmap e :scs find e =expand("")
        nmap f :scs find f =expand("")
        nmap d :scs find d =expand("")
 
 
选项说明可以在文档中查到 :
'csto' 的值决定 |:cstag| 命令查找的次序。如果 'csto' 被设为 0cscope 数据库先
被搜索,搜索失败的情况下在搜索标签文件。如果 'csto' 被设为 1,标签文件会在
cscope 数据库之前被搜索。缺省值为 0
:
:set csto=0
:set csto=1
这样就会先用 cscope搜索,如果失败了再用tag搜索。
若设定了 'cscopetag' 选项,":tag" 命令,CTRL-] 以及 "vim -t" 都会使用 |:cstag|
而不是缺省的 :tag。也就是说,设定 'cst' 选项意味着你总同时搜索 cscope 数据库和
标签文件。缺省值为关。例如 :
:set cst
:set nocst
设置了这个选项后, tag的功能就会替换成cstag了(tag命令和cstag命令变成了同一个命令,因此ctrl+]实际上也是调用cstag来处理)
 
如果 'cscopeverbose' 没有被设定 (缺省情况),当添加一个数据库时,成功与否不会被
显示。理想的情况是,你先在 |.vimrc| 文件中复位该选项,再添加 cscope 数据库,然
后再置位。这样,如果你在使用 vim 当中动态添加数据库,你就会被 vim 告知结果。例
:
:set csverb
:set nocsverb
 
cs add $CSCOPE_DBPATH $CSCOPE_DBPATH这行是我自己改的。因为我的cscope.out放在项目的根目录里,不指定pre-path的话cs就会在当前目录下使用相对路径查找文件,指定了pre-path就会使用绝对路径了(或者说把相对路径的参考点指定为了pre-path)。另外,不能写成:
cs add cscope.out $CSCOPE_DBPATH
因为这样 cscope会在当前目录下寻找cscope.out
 
现在可以开始使用了 ,跟使用tag一样,要先建立一个数据库:
cd /project_root_dir/
cscope -Rb
 
如果是 kernel源代码,最好加上-k选项来忽略/usr/include(因为kernel不会使用这个目录)
然后就可以 vi source.c阅读代码了。加入vi后,用cs help可以查看帮助,cs show可以查看当前打开的数据库。由于上面对几个cscope命令进行了键绑定,因此可以用ctrl+[,后面跟一个字母键来执行对应的操作。如在函数名foo上按ctrl+[,c,就可以看到调用了这个函数的所有函数。
 
 
5minibufexpl
    minibufexpl.vim拷贝至$VIM/vimfiles/plugin目录后便安装完毕。重新启动Vim,只要用single Vim 打开多个文件,就会在Vim菜单栏下新增一个名为-MiniBufExplorer-的窗口,在其中列出现有buffer(缓冲)的编号和名字(文件名)。只要鼠标双击buffer tab便能切换到对应文件,使其处于可编辑状态;如果光标处于-MiniBufExplorer-窗口,也可以用TabShift + Tabbuffer之间来回移动,回车确认切换到光标所在的buffer。用键盘上的d键可关闭选中的buffer(当然此时光标在-MiniBufExplorer-窗口中)。
另外我们可以把键盘上的上下左右四个方向键绑定到这个 plugin的几个函数上,使buffer切换更加便捷:
1 map :MBEbn             "右键,切换到下一个buffer窗口
2 map :MBEbp              "左键,切换到上一个buffer窗口
也可以在 command line模式使用:b,切换到第numbuffer
 
 
6 .让 VIM 环境看上去像 source insight
      下载 Tree FileTree 插件,然后安装,将下面内容添加到 .vimrc 中。
    map tl :TlistToggle
    let g:miniBufExplMapWindowNavVim = 1
    let g:miniBufExplMapWindowNavArrows = 1
    let g:miniBufExplMapCTabSwitchBufs = 1
    let g:miniBufExplModSelTarget = 1
    filetype on  "make sure VIM can recognize the file type
    let Tlist_Use_Right_Window=1  "let the tag list window on the right-most side of the window
    let Tlist_File_Fold_Auto_Close=1 "close the tag list as soon as it lose focus
    nnoremap :TlistToggle "use F8 to evoke the taglist plugin
    nnoremap :FileTree "use F9 to evoke the FileTree plugin
    nnoremap } " use F10 to do the code preview
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值