在window7下使用vi + ctags + cscope + taglist

来源:互联网 发布:mac razzledazzler试色 编辑:程序博客网 时间:2024/06/06 09:04
1)安装cygwin+ctags+cscope
下载setup.exe,以管理员身份运行;
搜索vim, ctags, cscope,选中,taglist没有,后续自己单独下载;
安装完成后,桌面上的cygwin terminal好像不能用;

找到C:\cygwin\Cygwin批处理文件,运行就能打开终端;

注:我后来又重装了一次,这次桌面上的cygwin terminal快捷键是可用的,看来前几次安装就是出了问题。


2)找到vi的配置文件:
运行vi,:echo $VIM 可以查看VIM的安装目录,我的安装目录是/usr/share/vim,对应window的C:\cygwin\usr\share\vim,其实我的安装目录下还有一级vim73目录,的配置文件模板就是/usr/share/vim/vim73/vimrc_example.vim,打开它,有段说明,按照说明将这个vimrc_example.vim复制成~/.vimrc文件,这个就是vi的配置文件了。

3)配置ctags
cd到代码目录
ctags -R *
生成tags文件;
告诉vi tags索引文件的位置:
在~/.vimrc中加入一行:
set tags=<tags file path>
例如:
set tags=~/linux-0.11/tags
重启vi之后,你现在可以使用Ctrl+]跳转了,把光标放到某个函数调用上,试试看。

4)安装taglist
到官网下载taglsit,是一个压缩包,解压后会看到两个文件夹:plugin和doc,把这两个文件夹里的内容复制到vi已有的对应目录:/usr/share/vim/vim73/plugin和/usr/share/vim/vim73/doc
重启vi,taglist就自动生效了,在vi中输入命令:Tlist,你就会看到Taglist窗口出现了。

5)配置cscope
在vi中使用cs命令的时候,vi默认寻找cscope可执行程序,可是我们在安装cygwin的时候装的是mlcscope,所以我们需要做个链接:
cd /usr/bin
ln -s mlcscope cscope

cd到代码目录,搜索所有你感兴趣的文件,例如:
find -name "*.s" -o -name "*.c" > file_list.cs
生成cscope索引文件
cscope -Rbkq -i file_list.cs

告诉vi cscope索引文件的位置:
在~/.vimrc中加入一行:
cs add <cscope.out path> <pre_path>,例如:
cs add ~/linux-0.11/cscope.out ~/linux-0.11/
<pre_path>是cscope在使用索引文件查找源码文件时候的基准位置; 比如cscope.out里面记录了一个init/main.c文件,cs在找这个文件的时候就知道从~/linux-0.11为基准找int/main,也就是说cs会找~/linux-0.11/init/main.c文件;
如果你在生成cscope.out索引文件的时候使用了-P参数,则索引文件里就已经记录了每个源码文件的绝对路径,于是你在使用cs add加载数据库的时候就不需要再制定<pre_path>了;

好了,现在可以在vi中使用cs搜索代码了,试试:cs f g foo查找foo的定义;

6) 为了让vi更好用,在.vimrc文件中加入这么几行:
" add by mayq
" set tag database
set tags=~/linux-0.11/tags
" set cscope database
cs add ~/linux-0.11/cscope.out ~/linux-0.11/

" show line number
set nu

" set current line hightlight, forground color=white, backgournd color=dark
" red
set cursorline
hi CursorLine cterm=NONE ctermbg=darkred ctermfg=white
hi CursorColumn cterm=NONE ctermbg=darkred ctermfg=white

" taglist setting
let Tlist_Use_LEFT_Window=1
let Tlist_File_Fold_Auto_Close=1
let Tlist_Show_One_File=1
let Tlist_GainFocus_On_ToggleOpen=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Auto_Open=1
nmap tl :Tlist<cr>
" end mayq