Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1162806
  • 博文数量: 181
  • 博客积分: 4968
  • 博客等级: 上校
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-13 21:52
文章分类

全部博文(181)

文章存档

2015年(2)

2013年(6)

2012年(22)

2011年(41)

2010年(27)

2009年(51)

2008年(32)

我的朋友

分类: LINUX

2009-03-13 11:07:47

vim cscope taglist 使用

一 . 安装
apt-get install  exuberant-ctags  cscope global
cppcomplete 和 taglist 要到的扩展列表中下载

taglist 的下载地址:
http:///scripts/script.php?script_id=273
cppcomplete 的下载地址:
http:///scripts/script.php?script_id=527

然后在 建立目录

代码:
$HOME/.vim/plugin

将下载的cppcomplete.vim 和 taglist.vim拷贝到$HOME/.vim/plugin中。
安装了global后,最新4.8.6 以上版本有带vim的扩展,将它也拷贝到 $HOME/.vim/plugin

debian sid 版本global安装后扩展文件在

代码:
/usr/share/doc/global/examples/gtags.vim.gz
需要拷贝到$HOME/.vim/plugin后解压,解压方法:

代码:
gzip -d  gtags.vim.gz


二 . 配置~/.vimrc

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
elseif $CSCOPE_DB != ""
        cs add $CSCOPE_DB
endif
set csverb
set cscopetag
"set cscopequickfix=s-,g-,d-,t-,e-,f-,i-
endif

三 .
载入与使用

cscope -R //载入数据库
Ctl+D    //退出
Ctl+T    //文件中退出

find 选项 字符串
0 或 s: 查找 C 符号
1 或 g: 查找定义
2 或 d: 查找本函数调用的函数
3 或 c: 查找调用指定函数的函数
4 或 t: 查找字符串
6 或 e: 查找 egrep 模式
7 或 f: 查找文件
8 或 i: 查找包含指定文件的文件

四 . 和ctags配合使用:

载入ctags:    ctags -R *
4.将光标移到kmalloc 单词上,
4.1 按"CTRL-\ s",将你带入所有引用函数kmalloc的菜单,在当前窗口打开文件

4.2 按“CTRL-]”,将你带入所有实现函数kmalloc的菜单,在当前窗口打开文件

4.3 按“CTRL-Space s”,将你带入所有引用kmalloc的菜单,水平打开新窗口

4.4 按“CTRL-Space CTRL-Space s”,将你带入所有引用kmalloc的菜单,垂直打开新窗口

4.5 下列是各键的含义
s --- symbol    符号
g --- globals    全局变量
c --- calls        调用自己的
t --- text         文本引用
e --- egrep     做egrep 搜索
f --- file           打开在光标处的文件
i --- includes   查找include所在光标处文件名的文件
d --- called     查找本函数调用的所有函数实现

4.6 按“CTRL-T”返回上一级窗口

5. 除了使用热键以外,也可以使用命令模式来查找
5.1 cs f s kmalloc
等价于CTRL-\ s

5.2 scs f s kmalloc
等价于CTRL-Space s

5.3 vert scs f s kmalloc
等价于CTRL-Space CTRL Space s

6. export CSCOPE_DB=~/cscope/cscope.out
这样就可以在任意目录下run “vi -t kmalloc”,而不会出现找不着DB的情况。


五 . vim的taglist插件使用方法

函数和变量的定义的即时浏览。这个是非常有用的功能。成千的变量,对于C/C++来说,一个类型错误都可能导致极难发现的问题,运行时出现无法预料的结果。vim里面使用taglist实现的。并且多个文件的列表都在一起,还可以按照类型折叠,以便于浏览。
taglist依赖于ctags,所以要先装ctags,否则taglist装了也没法用!

#unzip taglist.zip -d ~/.vim
#cp doc/taglist.txt /usr/share/vim/vim70/doc/
#cp plugin/taglist.vim /usr/share/vim/vim70/plugin/

#cd /usr/share/vim/vim70/doc/
(注:vim70是我自己的vim版本号,每个人可能不同,自己更改一下)
然后打开sudo vim,shift+: ,进入vim的命令行,使用

: helptags  .

来配置帮助文档
重启vim,用“:TlistToggle”来打开和关闭taglist窗口。
可以用“:help taglist”来获得更多帮助信息

下面讲一下~/.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
阅读(1159) | 评论(0) | 转发(0) |
0

上一篇:几个shell快捷键

下一篇:w3m命令

给主人留下些什么吧!~~