Taglist是Vim的源代码浏览插件,提供了在Vim中查看文件中包含的函数列表和类的方法类表的功能。Taglist功能的实现要依赖于Ctags。Ctags是一个用于产生代码索引文件的插件,其产生的索引文件用于帮助文本编辑器或其他工具快速,准确定位符号在代码文件中的位置。Ctags可以支持很多很多语言。。。
安装Ctags?
推荐使用Exuberant Ctags,其下载网址是 http://ctags.sourceforge.net/ .
下载了源代码 ctags-**.tar.gz后解压缩,切换到其目录进行编译,安装
1../configure
2.make
3.suod make install
至此,Ctags安装完成。
有些系统自带有相关的软件包哦
安装Taglist
1.在 http://www.vim-taglist.sourceforge.net/screenshots.html 下载最新版的Taglist软件包。
2.在个人用户目录下创建 .vim 目录,将taglist_**.zip中的内容解压到该目录。
3.进入Vim,在命令模式下输入命令 " helptags~/.vim/doc "即可完成Taglist的安装。
4.输入命令“ Tlist ”检查是否安装成功。
把Ctags和Taglist联系起来
安装好Ctags和Taglist后,需要把它们联系起来。
修改 ~/.vim/plugin/taglist.vim 文件,找到
if !exists(‘loaded_taglist’)这一行,在其前面添加
let Tlist_Ctags_Cmd="/usr/bin/ctags"OK,Vim+Taglist+Ctags安装完成!下面介绍如何使用使用 Vim+Taglist+Ctags 阅读代码!
使用Ctags和Taglist
1. 生成tags文件
在目录树的根目录里,使用命令:ctags -R 或 ctags –recurse
如: ctags -R src/* ,则会在当前目录下生成 tags 文件
要生成 cppcomplete 需要的 tags 文件的话,需要运行下面的命令:
ctags -n -f cppcomplete.tags –fields=+ai –C++-types=+p * -L cscope.files
注意,参数"-L cscope.files" 仅仅是借用了cscope生成的文件索引来帮助ctags去查询相关工程文件生成tags。
2. 编辑 vim 配置文件 .vimrc
在 .vimrc 文件中添加:
set tags=tags;注: 第一个命令里的分号是必不可少的。这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目录 中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。
set autochdir
当然你如果想直接使用绝对路径,这样也是可以的:
set tags=/home/xxx/myproject/tags
另外,在 Vim 配置文件 ~/.vimrc 中添加:
filetype plugin on
"let Tlist_Ctags_Cmd = ‘/usr/bin/ctags’ “设置ctags命令目录
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
"let Tlist_Use_Right_Window = 1 “让taglist窗口在右侧显示
3. 打开 Vim 前使用命令 ctags -R 产生tags文件, Vim 在启动时会自动查找并加载tags文件。
打开 Vim 之后, 使用命令 :Tlist 激活 Taglist; 按两次 Ctrl + W 在两个窗口来回跳转;Ctrl + ] 或 回车键 查看函数定义(前者在 Taglist 窗口显示, 后者在源文件窗口显示), Ctrl + O 返回源文件。其他的相关快捷键(taglist)如下:
Taglist 快捷键
回车键 跳到光标所在的标记的定义处(如将光标移到main函数,按回车键)
o 新建一个窗口,跳到标记定义处
p 预览标记定义(仍然在taglist窗口)
空格 在窗口的最下面显示标记的原型(如函数原型)
u 更新标记列表(比如源文件新增了一个函数,并在保存后,可在taglist窗口按u)
s 更改排序方式,在按名字排序和按出现顺序排序间切
d 删除光标所在的taglist文件(如用vi打开了两个文件f1.c,f2.c可以删除f1.c的标记)
x 放大/缩小taglist窗口
+ 展开(指标记)
- 折叠
* 全部展开
= 全部折叠
[[ 将光标移到前一个文件的起点
]] 将光标移到后一个文件的起点
q 退出taglist窗口
可以用”:TlistOpen“打开taglist窗口,用”:TlistClose“关闭taglist窗口。或者使用”:TlistToggle“在打开和关闭间切换。在我的vimrc中定义了下面的映射,使用<F9>键就可以打开/关闭taglist窗口:map <silent> <F9> :TlistToggle<cr>
最方便的方法是把光标移到变量名或函数名上,然后按下 Ctrl-] , 用 Ctrl-O 退回原来的地方。
SuperTab插件 : 简化补全代码的快捷键, 按 Tab 键即可(以前需要按 Ctrl + X, Ctrl + O )。
1.点此下载 SuperTab 插件( http://www.vim.org/scripts/script.php?script_id=1643), 放入插件文件夹内;
2.用 Vim 打开 supertab.vba, 并输入 :so% ;
3.敲回车后完成安装。
配置 SuperTab :
vimrc中添加:
let g:SuperTabRetainCompletionType=2
" 0 – 不记录上次的补全方式
" 1 – 记住上次的补全方式,直到用其他的补全命令改变它
" 2 – 记住上次的补全方式,直到按ESC退出插入模式为止
let g:SuperTabDefaultCompletionType="<C-X><C-O>"
" 设置按下<Tab>后默认的补全方式, 默认是<C-P>,
" 现在改为<C-X><C-O>. 关于<C-P>的补全方式,
" 还有其他的补全方式, 你可以看看下面的一些帮助:
" :help ins-completion
" :help compl-omni
之后就可以用 Tab 代替 Ctrl + X, Ctrl + O 了。
SuperTab使用很简单,只要在输入变量名或路径名等符号中途按Tab键,就能得到以前输入过的符号列表,并通过Tab键循环选择。