zoukankan      html  css  js  c++  java
  • Vim中自动加载cscope.out(Vim支持cscope)[zz]

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


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

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

    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 

    上边用find . 的方式,可能会造成cs找不到文件,可以find $PWD xxxx即可.



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

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

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

    1. :cs add [cscope.out] [pre-path]  


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

    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
  • 相关阅读:
    使用select2插件并添加拼音首字母检索
    sql id 或使用nolock
    .net 开源组件
    EF 创建数据库的策略 codefist加快效率!【not oringin!】
    个人拾遗!数组的拷贝等
    编程拾遗:集合类型的函数,返回值,如果没有,就返回默认集合new,或者 default(T)好一些。
    C# datatable to list
    npoi导出excel 导出List<T>
    display:inline、block、inline-block的区别 摘】
    ie下,jquery为动态添加的节点添加事件,用live
  • 原文地址:https://www.cnblogs.com/linucos/p/2976836.html
Copyright © 2011-2022 走看看