1. 程式人生 > >經典vim外掛功能說明、安裝方法和使用方法介紹

經典vim外掛功能說明、安裝方法和使用方法介紹

  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 +
481
482 下載安裝python
483
484
485 python補丁(pywin32-212.win32-py2.6.txt)(對pyclewn)下載安裝
486
487
488 下載安裝MimGW或Cywin
489
490 下載安裝pyclewn
491
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> 進行視窗加寬.
527         let g:proj_flags='c'    //設定後, 在專案視窗中開啟檔案後會自動關閉專案
528                                 視窗.
529         //let g:proj_flags='F'   //顯示浮動專案視窗. 關閉視窗的自動調整大小和窗
530