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 :Tlist101 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 winmanager113 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=20127 let g:defaultExplorer=1128 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 $vim135 在正常模式下, 敲入 ",wm" 即可看到, vim的左侧新建了两个窗口:FileExplorer和136 BufExplorer, 这样我们即可在FileExplorer窗口很方便地对目录进行查看, 编辑等137 操作; 在BufExplorer窗口中查看当前vim已经打开那些文件.138 139 140 #=============================================================================141 5. cscope142 (1). 帮助手册查看143 :help if_cscop.txt144 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=1161 162 " add any cscope database in current directory163 if filereadable("cscope.out")164 cs add cscope.out165 " else add the database pointed to by environment variable166 elseif $CSCOPE_DB !=""167 cs add $CSCOPE_DB168 endif169 170 " show msg when any other cscope db added171 set cscopeverbose172 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 endif182 183 (5). 使用例子184 首先进入源码目录, 在linux终端中输入以下命令以创建cscope数据库:185 $ find ~/work/..Project/ -name "*.h" -o -name "*.cpp" > cscope.files186 $ cscope -bkq -i cscope.files187 如果是在windows环境中, 则换成如下命令:188 dir /s /b *.cpp *.h > cscope.files189 cscope -b -q -k -i cscope.files190 191 然后, 用vim打开一个源文件(如: vim main.cpp),192 打开后, 第一件事就是导入cscope数据库了:193 :cs add /home/yourname/workpace/cscope.out /home/yourname/workpace194 195 cscope数据库导入成功后, 就可以利用"步骤(4)"中定义的快捷键进行相关的查找,196 浏览等操作了(当然也可以直接利用相关命令, 嘿嘿).197 198 #=============================================================================199 5. c.vim 插件200 (1). 帮助手册查看201 help csupport202 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.c218 进入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 omnicppcoplete339 (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 "不兼容vi348 filetype plugin on "开启文件类型识别功能349 进入c++源码目录, 在终端执行命令 ctags -R --c++-kinds=+p --fields=+iaS350 --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 swtich363 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 being369 edited (or vise versa)370 :AS splits and switches371 :AV vertical splits and switches372 :AT new tab and switches373 :AN cycles through matches374 :IH switches to file under cursor375 :IHS splits and switches376 :IHV vertical splits and switches377 :IHT new tab and switches378 :IHN cycles through matches379 <Leader>ih switches to file under cursor380 <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 matches383 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 the398 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 cursor417 /r manually input a regular expression. 用于搜索.418 /n clear this mark (i.e. the mark under the cursor), or clear all419 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, see448 " example:449 " press <tab> after function name and (450 " foo ( <tab>451 " becomes:452 " foo ( /<first param>`,/<second param>` )453 " press <tab> after code template454 " if <tab>455 " becomes:456 " if( /<...>` )457 " { 458 " /<...>`459 " }460 461 462 #=============================================================================463 11. autoproto.vim464 Using this script, typing ``(`` will result in (|), where | is the cursor465 position and the double backticks are just marking input. Typing a466 ``)`` will move the cursor outside the parens. This moving outside467 works even in nested scenarios. Typing ``if(my_array['key`` results in468 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.vim473 474 475 476 477 #=============================================================================478 12. pyclewn479 pyclewn在unix, windows下的安装方法:480 +481 482 下载安装python483 484 485 python补丁(pywin32-212.win32-py2.6.txt)(对pyclewn)下载安装486 487 488 下载安装MimGW或Cywin489 490 下载安装pyclewn491 492 493 (1). 帮助手册查看494 (2). 功能495 (3). 安装496 (4). 使用方法497 (5). 使用例子498 499 500 #=============================================================================501 13. project.vim502 (1). 帮助手册查看503 :help project.txt504 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>ToggleProject516 //插件项目窗口宽度. 默认值: 24517 let g:proj_window_width=20 //当按空格键 <space> 或者单击鼠标左键/518 <LeftMouse>时项目窗口宽度增加量,默认值:100519 let g:proj_window_increment=90520 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 口替换.531 let g:proj_flags='L' //自动根据CD设置切换目录.532 //let g:proj_flags='n' //显示行号.533 let g:proj_flags='S' //启用排序.534 let g:proj_flags='T' //子项目的折叠在更新时会紧跟在当前折叠下方显示(535 而不是其底部).536 let g:proj_flags='v' //设置后将, 按 /G 搜索时用 :vimgrep 取代 :grep.537 //let g:proj_run1='!p4 edit %f' //g:proj_run1 ... g:proj_run9 用法.538 let g:proj_run3='silent !gvim %f'539 540 (5). 使用例子541 1. 在源码目录下建立一个工程文件: exampleProject542 $ gvim exampleProject543 544 2. 在exampleProject文件中定入:545 MyProject="E:/desktop_item/tmp/0virtual/nehe2/LVHM/test" CD=. flag=r546 filter="*akefile*" { 547 Header file=. CD=. flag=r filter="*.h" { 548 }549 Source file=. CD=. flag=r filter="*.cpp" { 550 }551 }552 553 3. 在光标定位到第一行, 敲入:554 /R555 exampleProject文件改变, 如下:556 MyProject="E:/desktop_item/tmp/0virtual/nehe2/LVHM/test" CD=./557 flag=r filter="*akefile*" { 558 makefile559 Header file=. CD=. flag=r filter="*.h" { 560 MainFrm.h561 Resource.h562 StdAfx.h563 test.h564 testDoc.h565 testView.h566 }567 Source file=. CD=. flag=r filter="*.cpp" { 568 MainFrm.cpp569 StdAfx.cpp570 test.cpp571 testDoc.cpp572 testView.cpp573 }574 }575 576 4. 小测一下:577 把光标某个文件名上, 敲下 Enter 可以看到, 对应的文件在左边的窗口显示出578 来.579 580 5. 更多用法参考.vimrc的相关设置的说明或 help project.txt 查找帮助.581 582 583 #=============================================================================584 14. NERD_tree.vim585 (1). 帮助手册查看586 help NERD_tree587 588 (2). 功能589 目录树, 同时还可以对文件进行打开操作等.590 591 (3). 安装592 下载NERD_tree压缩包, 然后把解压的两个文件NERD_tree.vim 和 NERD_tree.txt 分593 别放到$HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.594 595 (4). 使用方法596 597 (5). 使用例子598 // let loaded_nerd_tree=1 // 禁用所有与NERD_tree有关的命令599 nmap <silent> <leader>tto :NERDTreeToggle<cr>600 let NERDTreeIgnore=['/.vim$','/~$'] // 不显示指定的类型的文件601 let NERDTreeShowHidden=0 // 不显示隐藏文件(好像只在linux环境中有效)602 let NERDTreeSortOrder=['//$','/.cpp$','/.c$','/.h$','*'] // 排序603 let NERDTreeCaseSensitiveSort=0 // 不分大小写排序604 let NERDTreeWinSize=30605 // let NERDTreeShowLineNumbers=1606 let NERDTreeShowBookmarks=1607 let NERDTreeQuitOnOpen=1 // 打开文件后, 关闭NERDTrre窗口608 // let NERDTreeHighlightCursorline=1 // 高亮NERDTrre窗口的当前行609 // nmap <silent> <leader>tmk :Bookmark expand(/"<cword>/")<cr>610 611 612 #=============================================================================613 15. NERD_commenter.vim614 (1). 帮助手册查看615 help NERD_commenter.616 617 (2). 功能618 源码文档注释.619 620 (3). 安装621 下载NERD_commenter压缩包, 然后把解压的两个文件NERD_commenter.vim 和622 NERD_commenter.txt 分别放到$HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.623 624 (4). 使用方法625 (5). 使用例子626 " let NERD_java_alt_style=1627 " Default mapping: [count],cc " 以行为单位进行注释.628 " ,c<space> "comment <--> uncomment.629 " ,cm " 以段作为单位进行注释.630 " ,cs " 简洁美观式注释.631 " ,cy " Same as ,cc except that the commented line(s) are yanked first.632 " ,c$ " 注释当前光标到行未的内容.633 " ,cA " 在行尾进行手动输入注释内容.634 " ,ca " 切换注释方式(/**/ <--> //).635 " ,cl " Same cc, 并且左对齐.636 " ,cb " Same cc, 并且两端对齐.637 " ,cu " Uncomments the selected line(s).638 639 640 #=============================================================================641 16. sketch.vim 用鼠标作画642 map <silent> <leader>ske :call ToggleSketch()<CR>643 644 645 646 647 #=============================================================================648 17. Calendar.vim649 map <silent> <leader>cal :Calendar<cr>650 map <silent> <leader>cah :CalendarH<cr>651 652 653 654 #=============================================================================655 18. DoxygenToolkit.vim656 (1). 代码文档工具657 let g:DoxygenToolkit_commentType = "C"658 let g:DoxygenToolkit_briefTag_pre="@Synopsis "659 let g:DoxygenToolkit_paramTag_pre="@Param"660 let g:DoxygenToolkit_returnTag="@Returns "661 let g:DoxygenToolkit_blockHeader="--------------------------------------------------------------------------"662 let g:DoxygenToolkit_blockFooter="----------------------------------------------------------------------------"663 let g:DoxygenToolkit_authorName="Mathias Lorente"664 let g:DoxygenToolkit_licenseTag="My own license"665 666 667 668 #=============================================================================669 19. cpp.vim670 (1). c/c++类名, 函数等高亮671 install details672 Make a backup copy of syntax/vim.cpp and overwrite syntax/vim.cpp with this file.673 674 675 676 #=============================================================================677 20. javacomplete.vim678 (1). 帮助手册查看679 :help javacomplete.txt680 (2). 功能681 进行java类, 包, 方法等补全.682 (3). 安装683 1. 下载, 解压, 把相应的文件copy到相应的目录下.684 2. 对Reflection.java进行编译, 编译命令为:685 javac -source 1.4 Reflection.java686 3. 把编译生成的Reflection.class文件移动到vim的$HOME目录下.(注意是移动, 而687 不是复制, 最好保证系统中只有一个Reflection.class文件, 且在vim的688 $HOME目录下.)689 4. 在.vimrc中加入:690 setlocal completefunc=javacomplete#CompleteParamsInfo691 autocmd FileType c set omnifunc=ccomplete#Complete692 autocmd FileType css set omnifunc=csscomplete#CompleteCSS693 autocmd FileType html set omnifunc=htmlcomplete#CompleteTags694 autocmd FileType java set omnifunc=javacomplete#Complete695 autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS696 autocmd FileType php set omnifunc=phpcomplete#CompletePHP697 autocmd FileType python set omnifunc=pythoncomplete#Complete698 autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags699 (4). 使用方法700 (5). 使用例子701 Math.<C-X><C-O>702 703 704 705 #=============================================================================706 21. JumpInCode_Plus.vim707 (1). 帮助手册查看708 709 710 (2). 功能711 <leader>jc Generate tags and cscope database from current directory to :712 CurrentDirectory/OutDB/cscope.out,tags713 <leader>jst list existed tags full name and choose tags714 <leader>jsc list existed cscope database full name and choose cscope.out715 716 (3). 安装717 把JumpInCode_Plus.vim 放到 $VIM/vimfiles/plugin718 719 (4). 使用方法720 (5). 使用例子721 722 723 724 #=============================================================================725 22. txtbrowser.zip726 (1). 帮助手册查看727 728 729 :help txtbrowser730 731 (2). 功能732 show the document map and syntax highlight in plain text.733 734 (3). 安装735 :help txtbrowser736 1. 请首先安装taglist插件(),737 我相信玩Vim的没有几个人没有安装这个插件吧.738 739 2. 下载插件后解压缩到目录$HOME/.vim(或$HOME/vimfiles, $VIM/vimfiles). 然后将解压后740 的.ctag, 剪切到$HOME目录下即可, 安装完成后你的文件夹下应该有下面的几个文件(请741 注意目录结构):742 $HOME/.ctags - 用于标题标签的生成.743 $HOME/.vim/syntax/txt.vim - .txt文件的语法高亮文件.744 $HOME/.vim/plugin/txtbrowser.vim - 浏览工具.745 $HOME/.vim/doc/txtbrowser.txt - 英文帮助文档.746 $HOME/.vim/doc/txtbrowser.cnx - 中文帮助文档.(别忘了打开然后执行747 ":helptags ."生成标签)748 由于版本1.1.1之前采用老的插件名, 请在安装前先删除低版本插件(主要是帮助文件, 原来的749 名字叫txt.txt和txt_cn.txt), 否则在安装新的帮助文档时会提示标签已经存在..750 751 3. 在你的.vimrc文件里加入下面三行, 然后重启你的Vim:752 syntax on753 let tlist_txt_settings = 'txt;c:content;f:figures;t:tables'754 au BufRead,BufNewFile *.txt setlocal ft=txt755 756 4. 本插件所有文件以fenc=utf8发布. 签于taglist对中文的支持有限, 你需要保证你的文757 档的enc值和fenc的值相等(例如, enc=cp936, fenc=cp936). 如果不等请将fenc的值设为758 相应的enc的值保(如:set fenc=cp936)存后并刷新(:TlistUpdate).759 760 (4). 使用方法761 :help txtbrowser762 (5). 使用例子763 764 765 766 #=============================================================================767 23. FindMate.vim768 (1). 帮助手册查看769 help FindMate770 771 772 (2). 功能773 快速查找文件774 775 (3). 安装776 下载FindMate压缩包, 然后把解压的两个文件FindMate.vim 和 FindMate.txt 分别放到777 $HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.778 779 (4). 使用方法780 You can launch FindMate by typing:781 ,, File_name782 Or783 :FindMate File_name784 The shortcut can be redefined by using:785 map your_shortcut <Plug>FindMate786 In your .vimrc file787 788 (5). 使用例子789 790 791 792 793 #=============================================================================794 24. ZoomWin.vim795 (1). 帮助手册查看796 797 798 (2). 功能799 Press <c-w>o : the current window zooms into a full screen800 Press <c-w>o again: the previous set of windows is restored801 802 (3). 安装803 Press <c-w>o : the current window zooms into a full screen804 Press <c-w>o again: the previous set of windows is restored805 806 (4). 使用方法807 (5). 使用例子808 809 810 811 #=============================================================================812 25. cpp_src.tar.bz2813 tags for std c++ (STL, streams, ...) : Modified libstdc++ headers for use with ctags814 (1). 帮助手册查看815 816 817 (2). 功能818 (3). 安装819 install details:820 1. unpack821 2. run822 $ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ cpp_src823 $ mv tags cpp # or whatever824 3. In Vim:825 set tags+=/my/path/to/tags/cpp 826 827 (4). 使用方法828 (5). 使用例子829 830 831 832 833 #=============================================================================834 26. grep.vim835 (1). 帮助手册查看836 837 838 (2). 功能839 The grep plugin integrates the grep, fgrep, egrep, and agrep tools with840 Vim and allows you to search for a pattern in one or more files and jump841 to them.842 843 (3). 安装844 1).845 To use this plugin, you need the grep, fgrep, egrep, agrep, find and846 xargs utilities. These tools are present in most of the Unix installations.847 For MS-Windows systems, you can download the GNU grep and find utilities848 from the following sites:849 850 851 2).852 把下载得到的grep.vim复制到 $HOME/plugin 目录中.853 854 (4). 使用方法855 :Grep856 857 (5). 使用例子858 859 #=============================================================================860 27. autocomplpop.zip861 (1). 帮助手册查看862 :help acp863 864 865 (2). 功能866 With this plugin, your vim comes to automatically opens popup menu for867 completions when you enter characters or move the cursor in Insert mode. It868 won't prevent you continuing entering characters.869 870 (3). 安装871 autocomplpop.zip872 mv plugin/acp.vim $HOME/.vim/plugin/acp.vim873 mv autoload/acp.vim $HOME/.vim/autoload/acp.vim874 mv doc/acp.jax $HOME/.vim/doc/acp.jax 875 mv doc/acp.txt $HOME/.vim/doc/acp.txt 876 877 (4). 使用方法878 Once this plugin is installed, auto-popup is enabled at startup by default.879 Which completion method is used depends on the text before the cursor. The880 default behavior is as follows:881 kind filetype text before the cursor ~882 Keyword * two keyword characters883 Filename * a filename character + a path separator884 +0 or more filename character885 Omni ruby ".", "::" or non-word character + ":"886 (|+ruby| required.)887 Omni python "."(|+python| required.)888 Omni xml "<", "</" or("<" + non-">" characters + " ")889 Omni html/xhtml "<", "</" or("<" + non-">" characters + " ")890 Omni css (":", ";", "{", "^", "@", or "!")891 +0 or 1 space892 893 (5). 使用例子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 :Tlist101 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 winmanager113 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=20127 let g:defaultExplorer=1128 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 $vim135 在正常模式下, 敲入 ",wm" 即可看到, vim的左侧新建了两个窗口:FileExplorer和136 BufExplorer, 这样我们即可在FileExplorer窗口很方便地对目录进行查看, 编辑等137 操作; 在BufExplorer窗口中查看当前vim已经打开那些文件.138 139 140 #=============================================================================141 5. cscope142 (1). 帮助手册查看143 :help if_cscop.txt144 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=1161 162 " add any cscope database in current directory163 if filereadable("cscope.out")164 cs add cscope.out165 " else add the database pointed to by environment variable166 elseif $CSCOPE_DB !=""167 cs add $CSCOPE_DB168 endif169 170 " show msg when any other cscope db added171 set cscopeverbose172 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 endif182 183 (5). 使用例子184 首先进入源码目录, 在linux终端中输入以下命令以创建cscope数据库:185 $ find ~/work/..Project/ -name "*.h" -o -name "*.cpp" > cscope.files186 $ cscope -bkq -i cscope.files187 如果是在windows环境中, 则换成如下命令:188 dir /s /b *.cpp *.h > cscope.files189 cscope -b -q -k -i cscope.files190 191 然后, 用vim打开一个源文件(如: vim main.cpp),192 打开后, 第一件事就是导入cscope数据库了:193 :cs add /home/yourname/workpace/cscope.out /home/yourname/workpace194 195 cscope数据库导入成功后, 就可以利用"步骤(4)"中定义的快捷键进行相关的查找,196 浏览等操作了(当然也可以直接利用相关命令, 嘿嘿).197 198 #=============================================================================199 5. c.vim 插件200 (1). 帮助手册查看201 help csupport202 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.c218 进入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 omnicppcoplete339 (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 "不兼容vi348 filetype plugin on "开启文件类型识别功能349 进入c++源码目录, 在终端执行命令 ctags -R --c++-kinds=+p --fields=+iaS350 --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 swtich363 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 being369 edited (or vise versa)370 :AS splits and switches371 :AV vertical splits and switches372 :AT new tab and switches373 :AN cycles through matches374 :IH switches to file under cursor375 :IHS splits and switches376 :IHV vertical splits and switches377 :IHT new tab and switches378 :IHN cycles through matches379 <Leader>ih switches to file under cursor380 <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 matches383 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 the398 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 cursor417 /r manually input a regular expression. 用于搜索.418 /n clear this mark (i.e. the mark under the cursor), or clear all419 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, see448 " example:449 " press <tab> after function name and (450 " foo ( <tab>451 " becomes:452 " foo ( /<first param>`,/<second param>` )453 " press <tab> after code template454 " if <tab>455 " becomes:456 " if( /<...>` )457 " { 458 " /<...>`459 " }460 461 462 #=============================================================================463 11. autoproto.vim464 Using this script, typing ``(`` will result in (|), where | is the cursor465 position and the double backticks are just marking input. Typing a466 ``)`` will move the cursor outside the parens. This moving outside467 works even in nested scenarios. Typing ``if(my_array['key`` results in468 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.vim473 474 475 476 477 #=============================================================================478 12. pyclewn479 pyclewn在unix, windows下的安装方法:480 +481 482 下载安装python483 484 485 python补丁(pywin32-212.win32-py2.6.txt)(对pyclewn)下载安装486 487 488 下载安装MimGW或Cywin489 490 下载安装pyclewn491 492 493 (1). 帮助手册查看494 (2). 功能495 (3). 安装496 (4). 使用方法497 (5). 使用例子498 499 500 #=============================================================================501 13. project.vim502 (1). 帮助手册查看503 :help project.txt504 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>ToggleProject516 //插件项目窗口宽度. 默认值: 24517 let g:proj_window_width=20 //当按空格键 <space> 或者单击鼠标左键/518 <LeftMouse>时项目窗口宽度增加量,默认值:100519 let g:proj_window_increment=90520 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 口替换.531 let g:proj_flags='L' //自动根据CD设置切换目录.532 //let g:proj_flags='n' //显示行号.533 let g:proj_flags='S' //启用排序.534 let g:proj_flags='T' //子项目的折叠在更新时会紧跟在当前折叠下方显示(535 而不是其底部).536 let g:proj_flags='v' //设置后将, 按 /G 搜索时用 :vimgrep 取代 :grep.537 //let g:proj_run1='!p4 edit %f' //g:proj_run1 ... g:proj_run9 用法.538 let g:proj_run3='silent !gvim %f'539 540 (5). 使用例子541 1. 在源码目录下建立一个工程文件: exampleProject542 $ gvim exampleProject543 544 2. 在exampleProject文件中定入:545 MyProject="E:/desktop_item/tmp/0virtual/nehe2/LVHM/test" CD=. flag=r546 filter="*akefile*" { 547 Header file=. CD=. flag=r filter="*.h" { 548 }549 Source file=. CD=. flag=r filter="*.cpp" { 550 }551 }552 553 3. 在光标定位到第一行, 敲入:554 /R555 exampleProject文件改变, 如下:556 MyProject="E:/desktop_item/tmp/0virtual/nehe2/LVHM/test" CD=./557 flag=r filter="*akefile*" { 558 makefile559 Header file=. CD=. flag=r filter="*.h" { 560 MainFrm.h561 Resource.h562 StdAfx.h563 test.h564 testDoc.h565 testView.h566 }567 Source file=. CD=. flag=r filter="*.cpp" { 568 MainFrm.cpp569 StdAfx.cpp570 test.cpp571 testDoc.cpp572 testView.cpp573 }574 }575 576 4. 小测一下:577 把光标某个文件名上, 敲下 Enter 可以看到, 对应的文件在左边的窗口显示出578 来.579 580 5. 更多用法参考.vimrc的相关设置的说明或 help project.txt 查找帮助.581 582 583 #=============================================================================584 14. NERD_tree.vim585 (1). 帮助手册查看586 help NERD_tree587 588 (2). 功能589 目录树, 同时还可以对文件进行打开操作等.590 591 (3). 安装592 下载NERD_tree压缩包, 然后把解压的两个文件NERD_tree.vim 和 NERD_tree.txt 分593 别放到$HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.594 595 (4). 使用方法596 597 (5). 使用例子598 // let loaded_nerd_tree=1 // 禁用所有与NERD_tree有关的命令599 nmap <silent> <leader>tto :NERDTreeToggle<cr>600 let NERDTreeIgnore=['/.vim$','/~$'] // 不显示指定的类型的文件601 let NERDTreeShowHidden=0 // 不显示隐藏文件(好像只在linux环境中有效)602 let NERDTreeSortOrder=['//$','/.cpp$','/.c$','/.h$','*'] // 排序603 let NERDTreeCaseSensitiveSort=0 // 不分大小写排序604 let NERDTreeWinSize=30605 // let NERDTreeShowLineNumbers=1606 let NERDTreeShowBookmarks=1607 let NERDTreeQuitOnOpen=1 // 打开文件后, 关闭NERDTrre窗口608 // let NERDTreeHighlightCursorline=1 // 高亮NERDTrre窗口的当前行609 // nmap <silent> <leader>tmk :Bookmark expand(/"<cword>/")<cr>610 611 612 #=============================================================================613 15. NERD_commenter.vim614 (1). 帮助手册查看615 help NERD_commenter.616 617 (2). 功能618 源码文档注释.619 620 (3). 安装621 下载NERD_commenter压缩包, 然后把解压的两个文件NERD_commenter.vim 和622 NERD_commenter.txt 分别放到$HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.623 624 (4). 使用方法625 (5). 使用例子626 " let NERD_java_alt_style=1627 " Default mapping: [count],cc " 以行为单位进行注释.628 " ,c<space> "comment <--> uncomment.629 " ,cm " 以段作为单位进行注释.630 " ,cs " 简洁美观式注释.631 " ,cy " Same as ,cc except that the commented line(s) are yanked first.632 " ,c$ " 注释当前光标到行未的内容.633 " ,cA " 在行尾进行手动输入注释内容.634 " ,ca " 切换注释方式(/**/ <--> //).635 " ,cl " Same cc, 并且左对齐.636 " ,cb " Same cc, 并且两端对齐.637 " ,cu " Uncomments the selected line(s).638 639 640 #=============================================================================641 16. sketch.vim 用鼠标作画642 map <silent> <leader>ske :call ToggleSketch()<CR>643 644 645 646 647 #=============================================================================648 17. Calendar.vim649 map <silent> <leader>cal :Calendar<cr>650 map <silent> <leader>cah :CalendarH<cr>651 652 653 654 #=============================================================================655 18. DoxygenToolkit.vim656 (1). 代码文档工具657 let g:DoxygenToolkit_commentType = "C"658 let g:DoxygenToolkit_briefTag_pre="@Synopsis "659 let g:DoxygenToolkit_paramTag_pre="@Param"660 let g:DoxygenToolkit_returnTag="@Returns "661 let g:DoxygenToolkit_blockHeader="--------------------------------------------------------------------------"662 let g:DoxygenToolkit_blockFooter="----------------------------------------------------------------------------"663 let g:DoxygenToolkit_authorName="Mathias Lorente"664 let g:DoxygenToolkit_licenseTag="My own license"665 666 667 668 #=============================================================================669 19. cpp.vim670 (1). c/c++类名, 函数等高亮671 install details672 Make a backup copy of syntax/vim.cpp and overwrite syntax/vim.cpp with this file.673 674 675 676 #=============================================================================677 20. javacomplete.vim678 (1). 帮助手册查看679 :help javacomplete.txt680 (2). 功能681 进行java类, 包, 方法等补全.682 (3). 安装683 1. 下载, 解压, 把相应的文件copy到相应的目录下.684 2. 对Reflection.java进行编译, 编译命令为:685 javac -source 1.4 Reflection.java686 3. 把编译生成的Reflection.class文件移动到vim的$HOME目录下.(注意是移动, 而687 不是复制, 最好保证系统中只有一个Reflection.class文件, 且在vim的688 $HOME目录下.)689 4. 在.vimrc中加入:690 setlocal completefunc=javacomplete#CompleteParamsInfo691 autocmd FileType c set omnifunc=ccomplete#Complete692 autocmd FileType css set omnifunc=csscomplete#CompleteCSS693 autocmd FileType html set omnifunc=htmlcomplete#CompleteTags694 autocmd FileType java set omnifunc=javacomplete#Complete695 autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS696 autocmd FileType php set omnifunc=phpcomplete#CompletePHP697 autocmd FileType python set omnifunc=pythoncomplete#Complete698 autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags699 (4). 使用方法700 (5). 使用例子701 Math.<C-X><C-O>702 703 704 705 #=============================================================================706 21. JumpInCode_Plus.vim707 (1). 帮助手册查看708 709 710 (2). 功能711 <leader>jc Generate tags and cscope database from current directory to :712 CurrentDirectory/OutDB/cscope.out,tags713 <leader>jst list existed tags full name and choose tags714 <leader>jsc list existed cscope database full name and choose cscope.out715 716 (3). 安装717 把JumpInCode_Plus.vim 放到 $VIM/vimfiles/plugin718 719 (4). 使用方法720 (5). 使用例子721 722 723 724 #=============================================================================725 22. txtbrowser.zip726 (1). 帮助手册查看727 728 729 :help txtbrowser730 731 (2). 功能732 show the document map and syntax highlight in plain text.733 734 (3). 安装735 :help txtbrowser736 1. 请首先安装taglist插件(),737 我相信玩Vim的没有几个人没有安装这个插件吧.738 739 2. 下载插件后解压缩到目录$HOME/.vim(或$HOME/vimfiles, $VIM/vimfiles). 然后将解压后740 的.ctag, 剪切到$HOME目录下即可, 安装完成后你的文件夹下应该有下面的几个文件(请741 注意目录结构):742 $HOME/.ctags - 用于标题标签的生成.743 $HOME/.vim/syntax/txt.vim - .txt文件的语法高亮文件.744 $HOME/.vim/plugin/txtbrowser.vim - 浏览工具.745 $HOME/.vim/doc/txtbrowser.txt - 英文帮助文档.746 $HOME/.vim/doc/txtbrowser.cnx - 中文帮助文档.(别忘了打开然后执行747 ":helptags ."生成标签)748 由于版本1.1.1之前采用老的插件名, 请在安装前先删除低版本插件(主要是帮助文件, 原来的749 名字叫txt.txt和txt_cn.txt), 否则在安装新的帮助文档时会提示标签已经存在..750 751 3. 在你的.vimrc文件里加入下面三行, 然后重启你的Vim:752 syntax on753 let tlist_txt_settings = 'txt;c:content;f:figures;t:tables'754 au BufRead,BufNewFile *.txt setlocal ft=txt755 756 4. 本插件所有文件以fenc=utf8发布. 签于taglist对中文的支持有限, 你需要保证你的文757 档的enc值和fenc的值相等(例如, enc=cp936, fenc=cp936). 如果不等请将fenc的值设为758 相应的enc的值保(如:set fenc=cp936)存后并刷新(:TlistUpdate).759 760 (4). 使用方法761 :help txtbrowser762 (5). 使用例子763 764 765 766 #=============================================================================767 23. FindMate.vim768 (1). 帮助手册查看769 help FindMate770 771 772 (2). 功能773 快速查找文件774 775 (3). 安装776 下载FindMate压缩包, 然后把解压的两个文件FindMate.vim 和 FindMate.txt 分别放到777 $HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.778 779 (4). 使用方法780 You can launch FindMate by typing:781 ,, File_name782 Or783 :FindMate File_name784 The shortcut can be redefined by using:785 map your_shortcut <Plug>FindMate786 In your .vimrc file787 788 (5). 使用例子789 790 791 792 793 #=============================================================================794 24. ZoomWin.vim795 (1). 帮助手册查看796 797 798 (2). 功能799 Press <c-w>o : the current window zooms into a full screen800 Press <c-w>o again: the previous set of windows is restored801 802 (3). 安装803 Press <c-w>o : the current window zooms into a full screen804 Press <c-w>o again: the previous set of windows is restored805 806 (4). 使用方法807 (5). 使用例子808 809 810 811 #=============================================================================812 25. cpp_src.tar.bz2813 tags for std c++ (STL, streams, ...) : Modified libstdc++ headers for use with ctags814 (1). 帮助手册查看815 816 817 (2). 功能818 (3). 安装819 install details:820 1. unpack821 2. run822 $ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ cpp_src823 $ mv tags cpp # or whatever824 3. In Vim:825 set tags+=/my/path/to/tags/cpp 826 827 (4). 使用方法828 (5). 使用例子829 830 831 832 833 #=============================================================================834 26. grep.vim835 (1). 帮助手册查看836 837 838 (2). 功能839 The grep plugin integrates the grep, fgrep, egrep, and agrep tools with840 Vim and allows you to search for a pattern in one or more files and jump841 to them.842 843 (3). 安装844 1).845 To use this plugin, you need the grep, fgrep, egrep, agrep, find and846 xargs utilities. These tools are present in most of the Unix installations.847 For MS-Windows systems, you can download the GNU grep and find utilities848 from the following sites:849 850 851 2).852 把下载得到的grep.vim复制到 $HOME/plugin 目录中.853 854 (4). 使用方法855 :Grep856 857 (5). 使用例子858 859 #=============================================================================860 27. autocomplpop.zip861 (1). 帮助手册查看862 :help acp863 864 865 (2). 功能866 With this plugin, your vim comes to automatically opens popup menu for867 completions when you enter characters or move the cursor in Insert mode. It868 won't prevent you continuing entering characters.869 870 (3). 安装871 autocomplpop.zip872 mv plugin/acp.vim $HOME/.vim/plugin/acp.vim873 mv autoload/acp.vim $HOME/.vim/autoload/acp.vim874 mv doc/acp.jax $HOME/.vim/doc/acp.jax 875 mv doc/acp.txt $HOME/.vim/doc/acp.txt 876 877 (4). 使用方法878 Once this plugin is installed, auto-popup is enabled at startup by default.879 Which completion method is used depends on the text before the cursor. The880 default behavior is as follows:881 kind filetype text before the cursor ~882 Keyword * two keyword characters883 Filename * a filename character + a path separator884 +0 or more filename character885 Omni ruby ".", "::" or non-word character + ":"886 (|+ruby| required.)887 Omni python "."(|+python| required.)888 Omni xml "<", "</" or("<" + non-">" characters + " ")889 Omni html/xhtml "<", "</" or("<" + non-">" characters + " ")890 Omni css (":", ";", "{", "^", "@", or "!")891 +0 or 1 space892 893 (5). 使用例子