当前位置 : 主页 > 编程语言 > java >

我的vim配置

来源:互联网 收集:自由互联 发布时间:2023-09-06
在home目录下建立 .vim文件夹 ,在其中建立plugin文件夹 1 visualmark 插件 visualmask ,他的功能就是提供可视书签,可以在所编著的书签间进行跳跃。 安装后不用任何设置即可使用,在普通模


在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下 

ctags -R *

ctags -R updater  只对./updater下的文件生成tags文件

给单个文件建立tag

ctags {filename}

这种有个问题,成员变量没有包含在里面。所以自动完成对象的成员时没有提示。

解决办法:


$ctags -R --fields=+iaS --extra=+q *


–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.



网友评论