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相关的插件,可以去找一下你有没有所感兴趣的。搜索结果在这里:
   点这里


你可能感兴趣的:(scope)