现在的位置: 首页 > 综合 > 正文

vim中的插件(持续更新)

2018年03月30日 ⁄ 综合 ⁄ 共 9609字 ⁄ 字号 评论关闭

vim是linux环境下的很实用的编辑器,号称"神一样的编辑器"。而vim的神奇是离不开其对插件的使用,vim的神奇的地方也在与它通过插件实现的用户的很强的定制性。vim可以通过用户的设置真正成为用户自己的编辑器。下面详细介绍我们常用的插件。另本博文持续更新。
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" bufexplorer 历史打开文件窗口      
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'''''下载地址
(1)http://www.vim.org/scripts/script.php?script_id=42
(2)网盘地址:http://pan.baidu.com/s/148eI6
'''''安装
(1)解压,使用unzip命令解压到~/.vim
(2)help文档的建立
    a)将bufexplorer-7.4.2/doc文件夹下的bufexplorer.txt文件复制到~/.vim/doc文件
    b)在vim界面的command模式(vim有command\insert\visual三种模式)下输入命令:helptags ~/.vim/doc将doc文件夹下的bufexplorer.txt添加到vim的help当中
(3)插件的安装:    将bufexplorer-7.4.2/plugin文件夹下的bufexplorer.vim拷贝到~/.vim/plugin
'''''插件的使用
to start exploring in the current window, use: >
 \be   or   :bufexplorer   or   your custom key mapping
在visual模式下输入\be或者在command模式下输入:bufexplorer
to start exploring in a newly split horizontal window, use: >
 \bs   or   :bufexplorerhorizontalsplit   or   your custom key mapping
to start exploring in a newly split vertical window, use: >
 \bv   or   :bufexplorerverticalsplit   or   your custom key mapping
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"winmanager 浏览窗口管理
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'''''下载地址
(1)http://www.vim.org/scripts/script.php?script_id=42
(2)网盘地址:http://pan.baidu.com/s/148eI6
'''''安装
安装办法和bufexplorer基本相同,需要特别注意的是winexplorer的插件文件总共有:
winfileexplorer.vim  winmanager.vim  wintagexplorer.vim三个文件
帮助文档依然只有winmanager.txt一个文件。
'''''插件的使用
the layout of winmanager is controlled by changing the value of the
"g:winmanagerwindowlayout" variable. the general form of this variable is
>
   g:winmanagerwindowlayout =
   'group1_member1,group1_member2|group2_member_1,group2_member_2'
<
i.e, explorer "groups" are seperated by the '|' character. within each group,
individual explorer plugin names are seperated by the comma (',') character.
what winmanager does is display only 1 member from each group in a window. the
user can go to a window and press <c-n> to display the next explorer belonging
to that group.
        +--------+-------------------+
        |        |                   |
        |        |      2(i)         |
        | 1(i)   |                   |
        |        +-------------------+
        |        |                   |
        +--------+      2(ii)        |
        | 1(ii)  |                   |
        +--------+-------------------+
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"neocomplcache:ultimate auto completion system for vim
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'''''下载地址
(1)http://www.vim.org/scripts/script.php?script_id=2620
(2)网盘地址:http://pan.baidu.com/s/148eI6
'''''安装
(1)下载zip压缩文件,安装方式同上面bufexplorer和winmanager.
(2)下载vba文件,这种文件格式的插件安装依赖于vim的一个名叫vimball的自带插件
(vim自带的vimball插件可能版本太低,可从官网下载最新版本,下载链接http://www.vim.org/scripts/script.php?script_id=1502)
使用vim打开下载的.vba格式的文件neocomplcache-6.1.vba,在command模式下输入命令:so%,即可完成安装过程。
'''''插件的使用
neocomplcache* performs keyword completion by maintaining a cache of keywords in
the current buffer.根据网友的建议,需要在~/.vimrc文件中考虑如下几个变量的值的问题。
++++a)let g:neocomplcache_enable_at_startup = 1"(启动vim即打开neocomplcache)
++++b)let g:neocomplcache_enable_smart_case = 1"(大小写敏感)
++++a)let g:neocomplcache_min_syntax_length = 3"(最小匹配的字符数)

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"a.vim :alternate files quickly
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'''''下载地址
(1)http://www.vim.org/scripts/script.php?script_id=31
(2)网盘地址:http://pan.baidu.com/s/148eI6
'''''安装
将下载的a.vim文件拷贝到~/.vim/plugin文件夹下即可。
'''''插件的使用
头/源文件切换命令
    :a 头文件/源文件切换
    :as 分割窗后并切换头/源文件(切割为上下两个窗口)
    :av 垂直切割窗口后切换头/源文件(切割为左右两个窗口)
    :at 新建vim标签式窗口后切换
    :an 在多个匹配文件间循环切换
将光标所在处单词作为文件名打开
    :ih 切换至光标所在文件
    :ihs 分割窗口后切换至光标所在文件(指将光标所在处单词作为文件名打开)
    :ihv 垂直分割窗口后切换
    :iht 新建标签式窗口后切换
    :ihn 在多个匹配文件间循环切换
可仿照eclipse定义跳转到光标所在文件的操作定义快捷键。

""""""""""""""""""""""""""""""
""代码注释 NERD Commenter : A plugin that allows for easy commenting of code for many filetypes
"""""""""""""""""""""""""""""""
filetype plugin on
'''''下载地址
(1)http://www.vim.org/scripts/script.php?script_id=1218
(2)网盘地址:http://pan.baidu.com/s/148eI6
'''''安装
安装方法基本和上面的插件安装系统,不赘述
'''''插件的使用
"推荐使用的注释方式:
"(1)[count]<leader>c<space> |NERDComToggleComment|
"Toggles the comment state of the selected line(s). If the topmost selected
"line is commented, all selected lines are uncommented and vice versa.
"<leader>在未定义的时候为"\",可以使用mapleader更改<leader>的值
"对于这个插件的使用网上很多人写的帖子在这一点上面有偏差,将<leader>默认为",",这点是有偏颇的。
"(2)<leader>ca |NERDComAltDelim|
"Switches to the alternative set of delimiters.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"DoxyGen-support.vim    
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'''''下载地址
(1)http://www.vim.org/scripts/script.php?script_id=1955
(2)网盘地址:http://pan.baidu.com/s/148eI6
'''''安装
下载的DoxyGen-support.zip的文件树如下:
doxygen-support/
    templates/
        doxygen.cpp.templates
        doxygen.templates
doc/
    doxygensupport.txt
plugin/
    doxygen-support.vim
README.doxygensupport
安装过程
    将doc/doxygensupport.txt拷贝到~/.vim/doc/
    将plugin/doxygensupport.vim拷贝到~/.vim/plugin/
    将templates/拷贝到~/.vim/
在vim界面下执行(command模式)
    :helptags ~/.vim/doc/
'''''插件的使用
DoxyGen-support.vim插件的意义在于按照Doxygen需求的格式添加文件的注释,以方便后面根据注释自动生成程序设计报告
该插件的使用依赖于/templates/文件夹下的模板文件,所以使用过程分为一下几步:
    (1)自定义模板文件,以供后续参考
    (2) 使用模板产生注释
    (3) 调用Doxygen产生程序的设计文档(可vim内部命令调用,也可以通过外部软件产生设计文档)
第一步和第二部可以参考:help doxygensupport
或者参见网页http://lug.fh-swf.de/vim/vim-doc/doxygensupport.html#doxygensupport-customization
~/.vimrc文件中定义快捷方式:
    map DFH :DoxyFILEHeader<CR>
    map DFU :DoxyFunction<CR>
    map DBL :DoxyBlockLong<CR>
    map DBS :DoxyBlockShort<CR>
则可以在visual模式下通过
    输入DFH在光标处添加文件注释
    输入DFU在光标处添加函数注释
    输入DBS、DBL在光标处添加单行、多行空白注释
(此处尚有一个疑问就是自定义的快捷键,未实现将command模式下的命令定义为command模式下的命令)

'''''插件使用过程中的问题以及解决方案
(1)由于missing variable,所以不能在vim环境下调用doxygen生成文档,解决办法:外部调用,仅仅使用插件产生符合doxygen注释要求的代码
(2)使用doxygen-support.vim插件产生函数的注释的过程中不能自动的匹配出函数的参数和返回值等。
效果如下所示:
Doxygen-support    
  /**
   * @brief   
   * @param   
   * @return  
   */
DoxygenToolkit
  /**             
   * @brief      
   *              
   * @param dir  
   * @param depth
   */            
但是不可否认的是,因为Doxygen-support.vim是基于模板产生注释的,模板比较容易自定义,所以主体仍然坚持使用Doxygen-support.vim,可以使用DoxygenToolkit补充对于方程的定义部分。原则上通过对于Doxygen-support.vim模板文件的修改是可以完成对于函数参数的自动识别的,但是不知道使用什么变量去获得这个参数。
'''''Doxygen产生文档
具体可以参见老孙的博客:http://blog.csdn.net/sunjiajiang/article/details/7390821

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"ctags
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

vim中对于变量函数等相关内容的定义位置的查询是通过tags文件的索引产生的,vim仅仅是使用tags文件,而tags文件的生成是通过linux下的其他的命令来产生的。如vim的help文档所述,能够产生tags标签文件的程序有很多。我们选用的是Exuberant Ctags 。

通过ctags --list-languages命令我们可以查看到它所支持的语言有:

Asm、Basic、C、C++、C#、Fortran、HTML、Java、Make、MatLab、Pascal、Perl、PHP、Python、Ruby、Sh、SQL、Verilog、VHDL等很多种。

通过ctags --list-kinds=C命令我们可以查看到它所支持的语言有:

Fighting!hust_smartcar@:~$ctags --list-kinds=C
c  classes
d  macro definitions
e  enumerators (values inside an enumeration)
f  function definitions
g  enumeration names
l  local variables [off]
m  class, struct, and union members
n  namespaces
p  function prototypes [off]
s  structure names
t  typedefs
u  union names
v  variable definitions
x  external and forward variable declarations [off]

上表列出的每类默认是使能的,除了用off标记出来的。亦即如果使用ctags产生C语言的tags标记文件,标记文件中会产生以上表格所列的各种类型的标记信息。这里主要分析一下带off的几个类型,以便在需要的使用通过

ctags --<language>-kinds=+类型标号

的方式进行添加。

l  local variables [off]

locale variables 即指程序函数中的本地变量,比如在函数中for函数中使用的控制循环次数的i等等的变量

p  function prototypes [off]

function prototypes指的是函数原型,例如

int fac(int);我们对于函数直接跳转到函数的定义处即可。

x  external and forward variable declarations [off]

基本上上面列出的ctags默认输出的类型基本上能够满足我们的使用需求。

由此我们使用ctags -R命令即可产生当前文件夹下及其子文件夹下的C文件中相关的类型的标记文件,文件名为tags。

vim中对于ctags的使用就是根据tags文件进行索引。在vim中使用的过程中我们需要指定我们允许vim使用的tags文件,同时保证vim对于tags标签的跳转过程中可以自动的进行文件路径的跳转,所以通常我们会在vim的配置文件.vimrc中添加如下的两行设置命令:

set tags=tags;

set autochdir;

在vim中标签跳转通常使用:

ctrl+]  跳转到光标所在对应的标签下

ctrl+t  回跳

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"NERDTree 目录树

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

该插件用于打开当前文件所在文件夹的目录。

用法相当于FileExplorer,但是比winmanger自带的FileExplorer好用很多,这里重点阐述一下如何将NERDTree合并到winmanager中。

本部分转自http://www.cnblogs.com/ifys/archive/2010/10/24/1860610.html

 winmanager自带的fileexplorer这个插件实在是比较差。最重要的一点是fileexplorer不能自动更新,如果通过其他的途径修改了文件夹中的内容,fileexplorer是不会显示的。相对而言Nerd_Tree功能就比较强大了。下面要把Nerd_Tree加入winmanager。

下载解压,打开NERD_tree.vim,按照winmanager的说明,在最后加入下面代码:

"Used by winmanager {{{1

let g:NERDTree_title = "[NERDTree]" 

function! NERDTree_Start() 

    exe 'NERDTree'

endfunction 

function! NERDTree_IsValid() 

return 1 

endfunction

同时把在vimrc中:

let g:winManagerWindowLayout='NERDTree|TagList,BufExplorer'

原来的设置注释掉。加好后,发现每次打开winmanager都会出现一个空白的buffer。试验了好多次,但是Nerd_tree调用的函数就是会打开一个新窗口。因为如此,将bufExplorer和NERD_Tree放在一起会显示不正常。NERD_Tree放在下面的窗口也会出错,实在比较郁闷。。。。看了下NERD_Tree的代码,没看懂,只好再次改winmanager的代码了。

打开winmanager.vim,找到函数function! <SID>ToggleWindowsManager(),加入两行,修改后整个函数如下:

" toggle showing the explorer plugins.
function! <SID>ToggleWindowsManager()
	if IsWinManagerVisible()
		call s:CloseWindowsManager()
	else
		call s:StartWindowsManager()
"        NERD_tree need this. 打开时会有一个空白窗口,要把他关闭。
		exe '1wincmd w'     "这句话的含义好似将光标跳到NERD_tree对应的窗口,然后再执行下面的关闭窗口的命令,
                                    "所以需要考虑自己的配置中NERD_tree窗口编号,并修改1wincmd中的数字1
                exe 'q' 
	end
endfunction

  

加个注释,以免以后忘掉了,如果不想用nerd_Tree了,这2句话还得删掉。

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"cscope
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
对于cscope插件的使用还不是很熟悉,等待后续完善

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"lookupfile.vim
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

抱歉!评论已关闭.