Vim中自动加载cscope.out

Vimer初成长,Vim + ctags + cscope 这个组合基本是每个Vimer的必备吧。虽然ctags已经足够强大,但是cscope可以做的更多。下面来分享下自己的vimrc脚本关于cscope的一部分,该脚本可以实现在项目的任一子目录下,自动的向上查找cscope.out,并把他add进来。


首先来分享一个小脚本,可以帮助我们在项目中生成cscope.out 和ctags。

我把这个文件命名为cs.sh

[java]  view plain  copy
  1. #!/bin/sh  
  2. find . -name "*.h" -o -name "*.c" -o -name "*.cpp" -o -name "*.java"\  
  3.         >cscope.files  
  4. cscope -bkq -i cscope.files  
  5. ctags -R  



需要的注意的是,上面的脚本中,生成的cscope.files中保存的是相对路径,而不是绝对路径。这样的话,在cscope 中查找tags的时候,是没法打开相应的包含查找结果的文件的。怎么避免这个问题呢?有如下两个方法:

1, 在cs.sh的脚本中,find命令后接一个变量PRO_PATH,这个PRO_PATH是当前项目的跟目录,这个时候cscope.files中保存的就是所有项目文件的绝对路径了。

2,在:cs add的时候,接一个prepend path

[java]  view plain  copy
  1. :cs add [cscope.out] [pre-path]  


我用了第二个方法,所以就有了下面的vimrc片段,

[java]  view plain  copy
  1. if has("cscope")  
  2.     set csprg=/usr/bin/cscope  
  3.     set csto=0  
  4.     set cst  
  5.     set csverb  
  6.     set cspc=3  
  7.     "add any database in current dir  
  8.     if filereadable("cscope.out")  
  9.         cs add cscope.out  
  10.     "else search cscope.out elsewhere  
  11.     else  
  12.        let cscope_file=findfile("cscope.out"".;")  
  13.        let cscope_pre=matchstr(cscope_file, ".*/")  
  14.        if !empty(cscope_file) && filereadable(cscope_file)  
  15.            exe "cs add" cscope_file cscope_pre  
  16.        endif        
  17.      endif  
  18. endif  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值