經典vim外掛功能說明、安裝方法和使用方法介紹
阿新 • • 發佈:2019-02-08
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
9 1. 檢視 key 相關資訊說明的命令 :help keycodes
10
11 #=============================================================================
12 2. ctags
13 (1). 幫助手冊檢視
14 :help usr_29
15
16 (2). 功能
17 ctags的功能, 只要在unix/linux環境程式設計過的人都知道它的歷害! 我在這也作個小
18
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
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
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