zoukankan      html  css  js  c++  java
  • Vim配置(常用配置+Cscope+taglist)

    有两个网站关于vim讲的非常好:

    http://www.vimer.cn/

    http://easwy.com/blog/     很敬佩这位大牛!!

    下载插件的官网是:搜一下想找的插件立马就会出来,官网很强大。

    http://www.vim.org/scripts/

    vim 默认安装在/usr/share/vim 里面vim73 和 vimfiles 两个文件夹,vim73中有一些.vim文件
    vim配置文件为 /etc下的vimrc文件



     Vim 中使用Cscope+taglist

    1,Cscope 以及Ctag索引文件的建立:

    为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件:

    #!/bin/sh

    find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files 

    cscope -bkq -i cscope.files 

    ctags -R

    这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。
    其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。
    这个脚本,首先使用find命令,查找当前目录及子目录中所有后缀名为".h", ".c"和".c"的文件,并把查找结果重定向到文件cscope.files中。 然后cscope根据cscope.files中的所有文件,生成符号索引文件。最后一条命令使用ctags命令,生成一个tags文件,在vim中执行":help tags"命令查询它的用法。它可以和cscope一起使用。上面所用到的命令参数,含义如下:
    -R: 在生成索引文件时,搜索子目录树中的代码
    -b: 只生成索引文件,不进入cscope的界面
    -q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
    -k: 在生成索引文件时,不搜索/usr/include目录
    -i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件列表。
    -I dir: 在-I选项指出的目录中查找头文件
    -u: 扫描所有文件,重新生成交叉索引文件
    -C: 在搜索时忽略大小写
    -P path: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

     

    2,在VIM加载cscope.out文件

    在VIM中使用cscope非常简单,首先调用“cscope add”命令添加一个cscope数据库,然后就可以调用“cscope find”命令进行查找了。VIM支持8种cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:cs find c work”.

    在源代码目录下打开vim。要使用cscope查找就必须加载cscope.out文件.

     s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方

    g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
    d: 查找本函数调用的函数
    c: 查找调用本函数的函数
    t: 查找指定的字符串
    e: 查找egrep模式,相当于egrep功能,但查找速度快多了
    f: 查找并打开文件,类似vim的find功能
    i: 查找包含本文件的文
    在安装了cscope和ctags的情况下,以下命令特别好使,他们现在cscope.out 数据库中查找,若没有则在ctags中查找

    ctrl+]:在函数调用的地方跳转到函数定义的地方
    ctrl+t:返回上一个查找的地方

    其它命令介绍:ctrl+]:在函数调用的地方跳转到函数定义的地方

                           ctrl+t:返回上一个查找的地方

    特别注意:所生成的cscope.out和tags文件要在打开VIM所在的文件夹,否则VIM无法找到相关符号信息。

    3,Cscope快捷键的使用

        nmap <C-@><C-@>s :vert scs find s <C-R>=expand("<cword>")<CR><CR>

        nmap <C-@><C-@>g :vert scs find g <C-R>=expand("<cword>")<CR><CR>

        nmap <C-@><C-@>c :vert scs find c <C-R>=expand("<cword>")<CR><CR>

        nmap <C-@><C-@>t :vert scs find t <C-R>=expand("<cword>")<CR><CR>

        nmap <C-@><C-@>e :vert scs find e <C-R>=expand("<cword>")<CR><CR>

        nmap <C-@><C-@>f :vert scs find f <C-R>=expand("<cfile>")<CR><CR>

        nmap <C-@><C-@>i :vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>

        nmap <C-@><C-@>d :vert scs find d <C-R>=expand("<cword>")<CR><CR>

    如果使用快捷键的话,需要自己建立以个文件,将上面的几行复制到文件中 /root/.vim/plugin/cscope_maps.vim

    4,taglist的安装和使用


    能够列出源文件中的tag(function, class, variable, etc)并跳转.

    注意:taglist依赖于ctags,所以要先装ctags,否则taglist装了也没法用!

    (1)到http://vim.sourceforge.net/scripts/script.php?script_id=273

    下载最新的taglist,我的版本是taglist_45.zip,解压你会发现俩个文件夹:doc和plugin.
    (2) 把上面两个文件夹放到$HOME/.vim目录下,或者$HOME/vimfiles或$VIM/vimfiles目录下。
    (3)使用
    在vim中用":TlistToggle"打开左边的tag窗口,再输一次自动关闭,按ctrl+w可以在窗口之间进行切换,也可以按照如下方法定义一个快捷键
      nnoremap :TlistToggle
    ":TlistOpen":Open and jump to the taglist window. 
    ":TlistClose":Close the taglist window.
    ":TlistToggle":Open or close (toggle) the taglist window.
    在taglist中的一些操作:
    : 跳转到光标处tag的源文件(就是回车键)
    o : 打开新窗口,并跳转到光标处tag的源文件。
    p : 与
    t : 打开新tab并跳转到光标处tag的源文件。
    : 显示光标处tag的函数原型
    + : 打开tag组
    - : 收拢tag组
    x : 最大化/还原

    二 . 配置~/.vimrc

    下面讲一下~/.vimrc配置文件的设置,下面是我自己的文件的设置
    " 开启语法高亮
    syntax on 
    " 设置文字编码自动识别
    set fencs=utf-8,cp936
    " 使用鼠标
    set mouse=a
    " 设置高亮搜索
    set hlsearch
    " 输入字符串就显示匹配点
    set incsearch
    " 输入的命令显示出来,看的清楚些。
    set showcmd
    " Tlist的内部变量。函数列表。
    let Tlist_Use_Right_Window=1
    let Tlist_File_Fold_Auto_Close=1
    "函数和变量列表
    map  :TlistToggle
    "全能补全
    inoremap  
    " 没事,鼠标画线玩的。
    " noremap  :call ToggleSketch()
    set wildmenu
    " 启动函数变量快速浏览的时间设置
    set updatetime=100
    然后你就可以在你vim中使用taglist,此时只需要点击F4来打开或者关闭!
    经过充实我的~/.vimrc内容如下:
    set hlsearch
    set ai
    syntax on
    set number
    set nocompatible
    set columns=80
    filetype on
    set history=1000
    set autoindent
    set smartindent
    set tabstop=4
    set shiftwidth=4
    set showmatch
    set guioptions-=T
    set vb t_vb=
    set ruler
    set nohls
    set noexpandtab
    set ignorecase
    set mouse=a
    set cindent
    set incsearch
    set fencs=utf-8,cp936
    set showcmd
    "Tlist的内部变量。函数列表。
    let Tlist_Use_Right_Window=1
    let Tlist_File_Fold_Auto_Close=1
    " "函数和变量列表
    map  :TlistToggle
    " "全能补全
    inoremap  
    " " 没事,鼠标画线玩的。
    noremap  :call ToggleSketch()
    set wildmenu
    " " 启动函数变量快速浏览的时间设置
    set updatetime=100
    map  :split
    map  :vsplit
    map  :q!
    map  :w!
    map  :wq!
    autocmd FileType python set omnifunc=pythoncomplete#Complete
    if has("cscope")
            set csprg=/usr/bin/cscope
            set csto=0
            set cst
            set nocsverb
            " add any database in current directory
            if filereadable("cscope.out")
                    cs add cscope.out
                    " else add database pointed to by environment
            elseif $CSCOPE_DB != ""
                    cs add $CSCOPE_DB
            endif
            set csverb
            set cscopetag
            "set cscopequickfix=s-,g-,d-,t-,e-,f-,i-
    endif

    附上.vim以及.vimrc

    http://tg1a198.mail.163.com/app/wp/doGetFile.jsp?sid=vEQDTWagKqfZdcHkAaggnuFESsZCbTAZ&mode=download&mid=154:1tbimh4gH0R3OUgvAwABsU

    http://tg1a198.mail.163.com/app/wp/doGetFile.jsp?sid=vEQDTWagKqfZdcHkAaggnuFESsZCbTAZ&mode=download&mid=154:1tbimh4gH0R3OUgvAwAAsV

    参考文章:http://blogold.chinaunix.net/u1/59481/showart_1861521.html

    cscope的主页在: http://cscope.sourceforge.net/
    在vim的网站上,有很多和cscope相关的插件,可以去找一下你有没有所感兴趣的。搜索结果在这里:
       点这里


  • 相关阅读:
    反射模块与模块之间的通信
    WCF传输协议
    IIs7 报错
    MVC3 ActionResult 返回类型
    三条数据 判断其中最大与最小
    dos批处理命令详解
    十拿九稳过倒桩之(倒桩技巧)
    九项路考(1)铁饼神功
    山鸽子
    九项路考(2)
  • 原文地址:https://www.cnblogs.com/jeakon/p/2816822.html
Copyright © 2011-2022 走看看