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>