在home目录下建立 .vim文件夹 ,在其中建立plugin文件夹
1 visualmark
插件 visualmask ,他的功能就是提供可视书签,可以在所编著的书签间进行跳跃。
安装后不用任何设置即可使用,在普通模式下按 ctrl+F2 或者 mm 即可进行设置高亮书签;按 F2 或 Shift+F2 进行跳跃;将光标移动到书签上,再按 ctrl+F2 或 mm 取消该书签。效果如下:
安装: 把下载下来的 visualmask.vim 放到 $HOME/.vim/plugin 目录下。
帮助: 见 visualmask.vim 的开头部分。
我在使用的过程中遇到一个问题,每次添加书签的时候都会提示:E197: Cannot set language to "en_US"。于是我将 visualmask.vim 的第55行:
exec ":lan mes en_US"
改成:
exec ":lan mes en_US.utf8"
这样就没问题了。
2
Ctags
下载地址:http://ctags.sourceforge.net
如果ubuntu14.04,直接apt-get install ctags即可。
用法:
shell下
1 ctags -R . 或者ctags -R *
2 ctags -R updater 只对./updater下的文件生成tags文件
给单个文件建立tag
ctags {filename}
这种有个问题,成员变量没有包含在里面。所以自动完成对象的成员时没有提示。
解决办法:
–fields=[+|-]flags
–fields指定tags的可用扩展域(extension fields),以包含到tags入口。
i:继承信息Inheritance information
a:类成员的访问控制信息 Access (or export) of class members
S: 常规签名信息,如原型或参数表 Signature of routine(e.g. prototype or parameter list)
–extra=[+|-]flags
指定是否包含某种扩展信息到tags入口。
q:包含类成员信息(如c++,java,Eiffel)。
但就算是C 语言的结构,也需要这两个参数设置才能获取成员信息。
这样就能自动完成结构和类的成员了。
在tags文件所在目录下打开tags vim会自动加载tags文件
如果tags文件不再当前目录下,可以在vim下设置,制定使用那个ctag文件
:ser tag=tag_file_path
可以在~/.vimrc中设置一直使用当前目录下的tags文件
:set tag = $PWD/tags
tags文件缺省按字母大小写排序
vim下
3 :tag {tagname} 跳转到tagname这个标签, 而且这时在输入tagname时,如果记不全还可以用tab自动不全!
4 ctrl + ] 跳到当前光标下的标签
有些环境下CTRL+] 快捷键不出现同名跳转列表,而是直接跳转到查找到的第一条记录,此时可以使用g+]代替
5 ctrl + t 跳到前一个标签, t前面加数字n可以往回调n次
6 :tags 显示标签栈,只能显示
:ts 显示出标签栈,可以选择并跳转
7 ctrl + g可以现实当前所在文件名以及行号
在tags的子文件夹下都可以的。因为ctags会向上一级目录寻找。
Cscope:
apt-get install cscope安装
安装好后在代码目录执行
$cscope -Rbk生成cscope的数据库文件:cscope.out
然后用gvim打开代码,执行:cs add cscope.out即可
然后就可以在vim的命令模式下利用cscope强大的搜索功能了 比如
cs find c get_args
在vimrc中加入以下,可以在启动vim后自动加载cscope的数据库文件
if has("cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set csverb
set cspc=3
"add any database in current dir
if filereadable("cscope.out")
cs add cscope.out
"else search cscope.out elsewhere
else
let cscope_file=findfile("cscope.out", ".;")
let cscope_pre=matchstr(cscope_file, ".*/")
if !empty(cscope_file) && filereadable(cscope_file)
exe "cs add" cscope_file cscope_pre
endif
endif
endif
VIM支持8种cscope的查询功能,如下:
c:Find functions calling this function//查找调用本函数的函数
d:Find functions called by this function //查找本函数调用的函数
e:Find this egrep pattern//查找egrep模式,相当于egrep功能,但查找速度快多了
f:Find this file //查找并打开文件,类似vim的find功能
g:Find this definition//查找函数、宏、枚举等定义的位置,类似ctags的功能
i:Find files #including this file //查找包含本文件的文件
s:Find this C symbol //查找C语言符号,即查找函数名、宏、枚举值等出现的地方
t:Find assignments to //查找指定的字符串
taglist
进入~/.vim目录,将Taglist安装包解压,解压后会在~/.vim目录中生成几个新子目录,如plugin和doc(安装其它插件时,可能还会新建autoload等其它目录)
在norm模式下输入Tlist即可显示taglist.