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

经典vim插件功能说明、安装方法和使用方法介绍

2013年11月16日 ⁄ 综合 ⁄ 共 18861字 ⁄ 字号 评论关闭

 1 #=============================================================================
  2  转载请注明出处: http://blog.csdn.net/tge7618291
  8 #=============================================================================
  9 1. 查看 key 相关信息说明的命令  :help keycodes
 10
 11 #=============================================================================
 12 2. ctags
 13 (1). 帮助手册查看
 14     :help usr_29
 15
 16 (2). 功能
 17     ctags的功能, 只要在unix/linux环境编程过的人都知道它的历害! 我在这也作个小
 18     小介绍吧ndow=0: 对浏览代码非常的方便, 可以在函数, 变量之间跳来跳去等等.(注
 19             意: 我这里说到的仅是小小的一部分!).
 20
 21 (3). 安装
 22     首先, 下载ctags安装包, 然后解压并安装, 命令如下:
 23     $ tar -xzvf ctags-5.6.tar.gz
 24     $ cd ctags-5.6
 25     $ make
 26     # make install   // 需要root权限
 27         或:
 28         $ tar -xzvf ctags-5.7.tar.gz
 29         $ cd ctags-5.7
 30         $ ./configure
 31         # make
 32         # make install
 33
 34
 35 (4). 使用方法
 36     然后去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下
 37     运行命令: ctags -R
 38     我现在以 vim71 的源码目录做演示
 39     $ cd /home/nuoerll/vim71
 40     $ ctags -R
 41     
 42     此时在/home/nuoerll/vim71目录下会生成一个 tags 文件, 现在用vim打开
 43     /home/nuoerll/vim71/src/main.c
 44     $ vim /home/nuoerll/vim71/src/main.c
 45     
 46     再在vim中运行命令:
 47     :set tags=/home/nuoerll/vim71/tags
 48     该命令将tags文件加入到vim中来, 你也可以将这句话放到~/.vimrc中去, 如果你经
 49     常在这个工程编程的话.
 50     对于经常在不同工程间编程, 可以在.vimrc中设置:
 51         set tags=tags;    // ; 不能没有
 52         set autochdir
 53
 54 (5). 使用例子
 55     把光标定位到某一函数名上, 按下 Ctar + ], vim就可以自动切换到该函数定义处!
 56     要返回只需要按下Ctrl + t .
 57     更多用法, 在vim命令模式输入 :help usr_29 查看即可.
 58
 59
 60 #=============================================================================
 61 3. TagList 插件
 62 (1). 帮助手册查看
 63     :help taglist.txt
 64
 65 (2). 功能
 66     高效地浏览源码, 其功能就像vc中的workpace, 那里面列出了当前文件中的所有宏,
 67     全局变量, 函数名等.
 68
 69 (3). 安装
 70     下载taglist压缩包, 然后把解压的两个文件taglist.vim 和 taglist.txt 分别放到
 71     $HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.
 72
 73 (4). 使用方法
 74     首先请先在你的~/.vimrc文件中添加下面语句:
 75         let Tlist_Ctags_Cmd='/bin/ctags'   // 若在windows中应写成: let/
 76                             Tlist_Ctags_Cmd='ctags.exe'
 77         let Tlist_Show_One_File=1
 78         let Tlist_OnlyWindow=1
 79         let Tlist_Use_Right_Window=0
 80         let Tlist_Sort_Type='name'
 81         let Tlist_Exit_OnlyWindow=1
 82         let Tlist_Show_Menu=1
 83         let Tlist_Max_Submenu_Items=10
 84         let Tlist_Max_Tag_length=20
 85         let Tlist_Use_SingleClick=0
 86         let Tlist_Auto_Open=0
 87         let Tlist_Close_On_Select=0
 88         let Tlist_File_Fold_Auto_Close=1
 89         let Tlist_GainFocus_On_ToggleOpen=0
 90         let Tlist_Process_File_Always=1
 91         let Tlist_WinHeight=10
 92         let Tlist_WinWidth=18
 93         let Tlist_Use_Horiz_Window=0
 94
 95     
 96     此时用vim打开一个c源文件试试:
 97     $ vim ~/vim/src/main.c
 98     
 99     进入vim后用下面的命令打开taglist窗口.
100     :Tlist
101
102     为了更方便地使用, 可以在.vimrc文件中加入:
103         map <silent> <leader>tl :TlistToggle<CR>
104     这样就可以用 ",tl" 命令进行taglist窗口的打开和关闭之间方便切换了. // 这里
105     的","是我.vimrc设置的leader, 你也可以设置成别的, 在.vimrc中修改即可, 如我
106     的: let mapleader=","
107         
108     
109 #=============================================================================
110 4. WinManager 插件
111 (1). 帮助手册查看
112     :help winmanager
113
114 (2). 功能
115     管理各个窗口, 或者说整合各个窗口.
116
117 (3). 安装
118     下载WinManager.zip压缩包, 解压后把*.vim文件放到 $HOME/.vim/plugin 目录中,
119     把*.txt文件放到 $HOME/.vim/doc 目录中.
120
121 (4). 使用方法
122     在.vimrc中加入如下设置:
123     let g:winManagerWindowLayout='FileExplorer|BufExplorer'  // 这里可以设置/
124     为多个窗口, 如'FileExplorer|BufExplorer|TagList'
125     let g:persistentBehaviour=0             // 只剩一个窗口时, 退出vim.
126     let g:winManagerWidth=20
127     let g:defaultExplorer=1
128     nmap <silent> <leader>fir :FirstExplorerWindow<cr>
129     nmap <silent> <leader>bot :BottomExplorerWindow<cr>
130     nmap <silent> <leader>wm :WMToggle<cr>
131
132 (5). 使用例子
133     在终端输入vim启动vim:
134     $vim
135     在正常模式下, 敲入 ",wm" 即可看到, vim的左侧新建了两个窗口:FileExplorer和
136     BufExplorer, 这样我们即可在FileExplorer窗口很方便地对目录进行查看, 编辑等
137     操作; 在BufExplorer窗口中查看当前vim已经打开那些文件.
138
139
140 #=============================================================================
141 5. cscope
142 (1). 帮助手册查看
143     :help if_cscop.txt
144
145 (2). 功能
146     用Cscope自己的话说 - "你可以把它当做是超过频的ctags", 其功能和强大程度可见
147     一斑吧, 关于它的介绍我就不详细说了, 如果你安装好了前文介绍的帮助手册.
148
149 (3). 安装
150     如果是在linux环境中, cscope一般都会随系统一起安装了; 在windows环境中, 则需
151     要下载windows版本的(cscope.exe), 然后把它放到path环境变量所设
152     置的目录中(如: C:/Program Files/Vim/vim72).
153
154 (4). 使用方法
155     在.vimrc中增加如下设置, 就可以利用相应的快捷键进行不同的查找了.
156         if has("cscope")
157             set cscopetag   " 使支持用 Ctrl+]  和 Ctrl+t 快捷键在代码间跳来跳去
158             " check cscope for definition of a symbol before checking ctags:
159             " set to 1 if you want the reverse search order.
160             set csto=1
161
162             " add any cscope database in current directory
163             if filereadable("cscope.out")
164                 cs add cscope.out
165             " else add the database pointed to by environment variable
166             elseif $CSCOPE_DB !=
""
167                 cs add $CSCOPE_DB
168             endif
169
170             " show msg when any other cscope db added
171             set cscopeverbose
172
173             nmap <C-/>s :cs find s <C-R>=expand("<cword>")<CR><CR>
174             nmap <C-/>g :cs find g <C-R>=expand("<cword>")<CR><CR>
175             nmap <C-/>c :cs find c <C-R>=expand("<cword>")<CR><CR>
176             nmap <C-/>t :cs find t <C-R>=expand("<cword>")<CR><CR>
177             nmap <C-/>e :cs find e <C-R>=expand("<cword>")<CR><CR>
178             nmap <C-/>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
179             nmap <C-/>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
180             nmap <C-/>d :cs find d <C-R>=expand("<cword>")<CR><CR>
181         endif
182
183 (5). 使用例子
184     首先进入源码目录, 在linux终端中输入以下命令以创建cscope数据库:
185         $ find ~/work/..Project/ -name "*.h" -o -name "*.cpp" > cscope.files
186         $ cscope -bkq -i cscope.files
187     如果是在windows环境中, 则换成如下命令:
188         dir /s /b *.cpp *.h > cscope.files
189         cscope -b -q -k -i cscope.files
190
191     然后, 用vim打开一个源文件(如: vim main.cpp),
192     打开后, 第一件事就是导入cscope数据库了:
193         :cs add /home/yourname/workpace/cscope.out /home/yourname/workpace
194
195     cscope数据库导入成功后, 就可以利用"步骤(4)"中定义的快捷键进行相关的查找,
196     浏览等操作了(当然也可以直接利用相关命令, 嘿嘿).
197
198 #=============================================================================
199 5. c.vim 插件
200 (1). 帮助手册查看
201     help csupport
202
203 (2). 功能
204     C/C++-IDE for Vim/gVim. 简单的说, 就是如果安装配置好后, vim/gvim就是一个
205     c/c++编程的一个IDE, 其功能堪比windows里常用的vc.
206
207 (3). 安装
208     下载cvim.zip压缩包后, 把压缩包copy到 $HOME/.vim 目录(windows下, copy 到
209             C:/Program Files/Vim/vimfiles)下解压, 即可.
210         unzip cvim.zip    // 解压命令
211         
212 (4). 使用方法
213     安装好后就可以直接用了, 具体例子看"使用例子".
214     
215 (5). 使用例子
216     在终端用vim打开一个c文件:
217         $vim hello.c
218     进入vim, 敲入 "/im" 即可发现一个main函数框架就这样快捷简单完美地写出.    
219
220     我比效常用的的操作有(第一列为命令, 第二列为说明, 第三列为该命令所支持的模
221             式(n:普通模式, v:可视模式, i:插入模式):
222           -- Help -----------------------------------------------
223           /hm       show manual for word under the cursor
(n,i)
224           /hp       show plugin help                      (n,i)
225
226           -- Comments -------------------------------------------
227           /cl       end-of-line
comment
                
(n,v,i)

228           /cj       adjust end-of-line
comment
(s)      
(n,v,i)
229           /cs       set end-of-line
comment
 column      (n)
230           /c*       code ->
comment
 /* */              
(n,v)

231           /cc       code ->
comment
 //                  (n,v)
232           /co      
comment
 -> code                    
(n,v)

233           /cfr      frame
comment
                      
(n,i)

234           /cfu      function
comment
                    (n,i)
235           /cme      method description                  (n,i)
236           /ccl      class description                  
(n,i)
237           /cd       date                                (n,v,i)
238           /ct       date /& time                        (n,v,i)
239
240           -- Statements ------------------------------------------
241           /sd       do { } while                        (n,v,i)
242           /sfo      for { }                            
(n,v,i)
243           /sife     if { } else { }                    
(n,v,i)
244           /se       else { }                            (n,v,i)
245           /swh      while { }                          
(n,v,i)
246           /ss       switch                              (n,v,i)
247
248           -- Preprocessor -----------------------------------------
249           /p<       #include <>                        
(n,i)
250           /p''      #include ""                        
(n,i)
251           /pd       #define                            
(n,i)
252           /pu       #undef                              (n,i)
253           /pie      #if  #else #endif                  
(n,v,i)
254           /pid      #ifdef #else #endif                
(n,v,i)
255           /pin      #ifndef #else #endif                (n,v,i)
256           /pind     #ifndef #def #endif                
(n,v,i)
257           /pi0      #if 0 #endif                        (n,v,i)
258           /pr0      remove #if 0 #endif                
(n,i)
259           /pe       #error                              (n,i)
260           /pl       #line                              
(n,i)
261           /pp       #pragma                            
(n,i)
262
263           -- Idioms ------------------------------------------------
264           /if       function                            (n,v,i)
265           /isf      static function                    
(n,v,i)
266           /im       main()                              (n,v,i)
267           /i0       for( x=0; x<n; x+=1 )              
(n,v,i)
268           /in       for( x=n-1; x>=0; x-=1 )            (n,v,i)
269           /ie       enum   + typedef                    (n,i)
270           /is       struct + typedef                    (n,i)
271           /iu       union  + typedef                    (n,i)
272           /ip       printf()                            (n,i)
273           /isc      scanf()                            
(n,i)
274           /ica      p=calloc()                          (n,i)
275           /ima      p=malloc()                          (n,i)
276           /isi      sizeof()                            (n,v,i)
277           /ias      assert()                            (n,v)
278           /ii       open input file                    
(n,i)
279           /io       open output file                    (n,i)
280
281           -- Snippets ------------------------------------------------
282           /nr       read code snippet                  
(n,i)
283           /nw       write code snippet                  (n,v,i)
284           /ne       edit code snippet                  
(n,i)
285           /np       pick up prototype                  
(n,v,i)
286           /ni       insert prototype(s)                
(n,i)
287           /nc       clear  prototype(s)                
(n,i)
288           /ns       show   prototype(s)                
(n,i)
289           /ntl      edit local templates                (n,i)
290           /ntg      edit global templates              
(n,i)
291           /ntr      rebuild templates                  
(n,i)
292
293           -- C++ ----------------------------------------------------
294           /+co      cout  <<  << endl;                  (n,i)
295           /+c       class                              
(n,i)
296           /+cn      class
(using new)
                   (n,i)
297           /+ci      class implementation                (n,i)
298           /+cni     class
(using new)
 implementation    (n,i)
299           /+mi      method implementation              
(n,i)
300           /+ai      accessor implementation            
(n,i)
301
302           /+tc      template class                      (n,i)
303           /+tcn     template class
(using new)
          (n,i)
304           /+tci     template class implementation      
(n,i)
305           /+tcni    template class
(using new)
 impl.    (n,i)
306           /+tmi     template method implementation      (n,i)
307           /+tai     template accessor implementation    (n,i)
308
309           /+tf      template function                  
(n,i)
310           /+ec      error class                        
(n,i)
311           /+tr      try ... catch                      
(n,v,i)
312           /+ca      catch                              
(n,v,i)
313           /+c.      catch(...)                          (n,v,i)
314
315           -- Run ---------------------------------------------------
316           /rc       save and compile                    (n,i)
317           /rl       link                                (n,i)
318           /rr       run                                
(n,i)
319           /ra       set comand line arguments          
(n,i)
320           /rm       run make                            (n,i)
321           /rg       cmd. line arg. for make            
(n,i)
322           /rp       run splint                          (n,i)
323           /ri       cmd. line arg. for splint          
(n,i)
324           /rk       run CodeCheck
(TM)
                  (n,i)
325           /re       cmd. line arg. for CodeCheck
(TM)   (n,i)
326           /rd       run indent                          (n,v,i)
327           /rh       hardcopy buffer                    
(n,v,i)
328           /rs       show plugin settings                (n,i)
329           /rx       set xterm size                      (n, only Linux/UNIX & GUI)
330           /ro       change output destination          
(n,i)
331                 
332     关于此插件的更多功能和各种说明, 请查看帮助手册, help csupport.
333
334             
335 #=============================================================================
336 6. omnicppcoplete 插件
337 (1). 帮助手册查看
338     :help omnicppcoplete
339 (2). 功能
340     实现像vc那样的代码自动补全功能, 比如 this-><Ctrl+X><Ctrl+O> 后, 将出现一个
341     提示框, 其中包含了this指针所有可以接收的函数或数据成员等.
342 (3). 安装
343     把下载下来的 omnicppcoplete-0.41.zip 压缩包copy到 $HOME/.vim/
(windows 复
344             制到 C:/Program Files/Vim/vimfiles ), 然后解压, 即可.
345 (4). 使用方法
346     在.vimrc中添加以下两条语句:
347         set nocp   "不兼容vi
348         filetype plugin on  
"开启文件类型识别功能
349     进入c++源码目录, 在终端执行命令 ctags -R --c++-kinds=+p --fields=+iaS
350     --extra=+q .
351 (5). 使用例子
352     编写c++代码时, 如要自动补全, 敲入 Ctrl+X Ctrl+O, 即可在出现的提示框中用
353     Ctrl+N 选择符合要求的.
354
355
356 #=============================================================================
357 7. a.vim插件
358 (1). 帮助手册查看
359     这个插件没有帮助手册, 不过大可放心使用, 其提供的功能也不是很多, 就几条命令
360     , 但是用起来真的是很方便.
361 (2). 功能
362     在 .h 和 .c/.cpp 文件中切换.
(英文原句 "A few of quick commands to swtich

363             between source files and header files quickly.")
364 (3). 安装
365     把下载到的a.vim插件放到 $HOME/.vim/plugin 目录下, 即可.
366 (4). 使用方法
367     只要在vim中输入以下命令即可完成相应的功能:
368         :A switches to the header file corresponding to the current file being
369             edited
(or vise versa)

370         :AS splits and switches
371         :AV vertical splits and switches
372         :AT new tab and switches
373         :AN cycles through matches
374         :IH switches to file under cursor
375         :IHS splits and switches
376         :IHV vertical splits and switches
377         :IHT new tab and switches
378         :IHN cycles through matches
379         <Leader>ih switches to file under cursor
380         <Leader>is switches to the alternate file of file under cursor
(e.g.
381                 on  <foo.h> switches to foo.cpp)
382         <Leader>ihn cycles through matches
383
384 #=============================================================================
385 8. VisualMark.vim插件
386 (1). 帮助手册查看
387     这个插件没有帮助手册, 不过大可放心使用, 其提供的功能也不是很多, 就几条命令
388     , 但是用起来真的是很方便.
389 (2). 功能
390     高亮书签.
391 (3). 安装
392     把下载好的VisualMark.vim插件放到 $HOME/.vim/plugin 目录下, 即可.
393 (4). 使用方法
394     只要在vim中执行以下命令即可完成相应的功能:
395          1.  For gvim, use "Ctrl + F2" to toggle a visual mark.
396              For both vim and gvim, use "mm" to toggle a visual mark.
397          2.  Use "F2" to navigate through the visual marks forward in the
398          file.
399          3.  Use "Shift + F2" to navigate backwards.
400
401 #=============================================================================
402 9. Mark.vim插件
403 (1). 帮助手册查看
404      这个插件没有帮助手册, 不过大可放心使用, 其提供的功能也不是很多, 就几条命
405      令, 但是用起来真的是很方便.
406
407 (2). 功能
408      这个插件与vim中自带的'*'与'#'非常相像. 不同之处是: vim中的'*'与'#'命令只
409      能同时高亮一个同类词组(或正则表达式的搜索结果), 而Mark.vim插件可以同时高
410      亮多个.
411
412 (3). 安装
413     把下载好的Mark.vim插件放到 $HOME/.vim/plugin 目录中, 即可.
414
415 (4). 使用方法
416     /m      mark or unmark the word under
(or before)
 the cursor
417     /r      manually input a regular expression. 用于搜索.
418     /n      clear this mark
(i.e. the mark under the cursor)
, or clear all
419             highlighted marks .
420     /*      把光标向前切换到当前被Mark的MarkWords中的下一个MarkWord.
421     /#      把光标向后切换到当前被Mark的MarkWords中的上一个MarkWord.
422     //      把光标向前切换到所有被Mark的MarkWords中的下一个MarkWord.
423     /?      把光标向后切换到所有被Mark的MarkWords中的上一个MarkWord.
424
425         说明: 这些命令中的 '/' 是 vim 中的 mapleader, 你也可以设置为别的: 如,
426         若要设置为 ',', 把下面这条语句加到.vimrc文件中, 即可,
427             let mapleader=","
428
429
430 #=============================================================================
431 10. code_complete.vim插件
432 (1). 帮助手册查看
433 (2). 功能
434      函数参数提示.
435
436 (3). 安装
437      下载code_complete.vim插件放到 C:/Program Files/Vim/vimfiles 目录中, 即可.
438
439 (4). 使用方法
440      进入源码目录, 执行如下命令:
441      ctags -R --c-kinds=+p --fields=+S .
442
443 (5). 使用例子
444 " Usage:
445 "           hotkey:
446 "              
"<tab>" (default value of g:completekey)
447 "               Do all the jobs with this key, see
448 "           example:
449 "               press <tab> after function name and (
450 "                 foo ( <tab>
451 "               becomes:
452 "                 foo ( /<first param>`,/<second param>` )
453 "               press <tab> after code template
454 "                 if <tab>
455 "               becomes:
456 "                 if( /<...>` )
457 "                
{

458 "                     /<...>`
459 "                 }
460
461
462 #=============================================================================
463 11. autoproto.vim
464 Using this script, typing ``(`` will result in (|), where | is the cursor
465         position and the double backticks are just marking input. Typing a
466         ``)`` will move the cursor outside the parens. This moving outside
467 works even in nested scenarios. Typing ``if(my_array['key`` results in
468         if(my_array['key|']) and ``)`` gets you if(my_array['key'])|.
469
470 The paired characters are: [, (, {, ", ';   //
"
471
472 If you like this script, you should also check out surround.vim
473
474
475
476
477 #=============================================================================
478 12. pyclewn
479 pyclewn在unix, windows下的安装方法:
480 http://pyclewn.wiki.sourceforge.net/install+
481
482 下载安装python
483 http://www.python.org/download/
484
485 python补丁(pywin32-212.win32-py2.6.txt)(对pyclewn)下载安装
486 http://sourceforge.net/project/platformdownload.php?group_id=78018
487
488 下载安装MimGW或Cywin
489
490 下载安装pyclewn
491 http://sourceforge.net/project/showfiles.php?group_id=212808
492
493 (1). 帮助手册查看
494 (2). 功能
495 (3). 安装
496 (4). 使用方法
497 (5). 使用例子
498
499
500 #=============================================================================
501 13. project.vim
502 (1). 帮助手册查看
503     :help project.txt
504
505 (2). 功能
506     组织管理工程, 方便于浏览, 打开, 查找文件等.
507
508 (3). 安装
509     下载project.vim压缩包(如: project.gz), 然后把解压的两个文件project.vim 和
510     project.txt 分别放到 $HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.
511
512 (4). 使用方法
513     在.vimrc中加入以下设置:
514         // 切换打开和关闭project窗口
515         nmap <silent> <Leader>P <Plug>ToggleProject
516         //插件项目窗口宽度.    默认值: 24
517         let g:proj_window_width=20 //当按空格键 <space> 或者单击鼠标左键/
518                                 <LeftMouse
>时项目窗口宽度增加量,默认值:100
519         let g:proj_window_increment=90
520         let g:proj_flags='i'    //当选择打开一个文件时会在命令行显示文件名和当
521                                 前工作路径.
522         let g:proj_flags='m'    //在常规模式下开启 |CTRL-W_o| 和
523                                 |CTRL-W_CTRL_O| 映射, 使得当前缓冲区成为唯一可
524                                 见的缓冲区, 但是项目窗口仍然可见.
525         let g:proj_flags='s'    //开启语法高亮.
526         let g:proj_flags='t'    //用按 <space>

抱歉!评论已关闭.