Vim配置(常用配置+Cscope+taglist)

来源:互联网 发布:达内 财报数据 编辑:程序博客网 时间:2024/06/10 22:55
有两个网站关于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相关的插件,可以去找一下你有没有所感兴趣的。搜索结果在这里:
   点这里


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝买的鞋子把脚磨坏了怎么办 拼多多下单 没货 没法发货怎么办 闲鱼退货物流弄坏了卖家拒收怎么办 客户说物流太慢了 要退货怎么办 京东退货物流系统不更新怎么办 把货交给物流但是物流丢货了怎么办 货还在物流就申请退款怎么办 荣耀4x返回键不管用怎么办 华为手机关不了机也开不了机怎么办 荣耀畅玩5x手机密码忘了怎么办 华为短信验证码失败其他错误怎么办 红米3x手机卡顿反应慢怎么办 华为手机不停的自动重启怎么办 华为荣耀4x卡在开机界面怎么办 华为荣耀8青春版密码忘了怎么办 华为手机内存满了开不起来怎么办 华为荣耀畅玩平板2比较卡怎么办 红米4x太卡了怎么办 魅蓝e移动卡只有2g网络怎么办 联通关闭2g网络双卡手机怎么办 小米6x手机插耳机音量大怎么办 音量键和亮度键盘拆了怎么办 荣耀v10锁屏密码忘了怎么办 荣耀9锁屏密码忘记了怎么办 华为荣耀v9锁屏密码忘记了怎么办 荣耀手机密码忘了怎么办数字锁 华为畅享5忘了开机密码怎么办 华为p9连接热点忘了密码怎么办 苹果手机用联通卡信号不好怎么办 魅族手机充电口松了怎么办 华为手机刷机失败开不了机怎么办 华为刷机失败开不了机怎么办 银行卡信息被盗密码被改该怎么办 全民k歌手机话筒有杂音怎么办 手机刷机清除数据需要密码怎么办 oppo手机屏锁密码忘了怎么办 华为手机摔了一下开不了机怎么办 华为v9手机删除隐私空间了怎么办 华为荣耀畅玩5x卡顿怎么办 淘宝买家收到货后恶意退款怎么办 手机淘宝申请退款后不想退了怎么办