cvim用户手册∗Yang Cheng†2010.8.12cvim是Vim的一个插件,用于支持C/C++的开发。
可以方便的支持插入声明(statements),惯用语法(idioms),代码片段(code snippets),模板(templates)和注释(comments);并且支持语法检查(Syntax checking),编译(compiling)及运行(running)程序,也可以通过按键操作检查和格式化代码。
此插件可同时支持Vim/gVim,但由于gVim中是以菜单(Menus)的形式提供各种功能,故使用起来也很方便,无须多作介绍。
下面仅以Vim来做介绍。
1无GUI界面的用法USAGE WITHOUT GUI(Vim)常见的功能可以通过键盘映射的方式被插入。
这些键映射在文档c-hot-keys.pdf1中描述。
如果需要修改映射的头‘\’,可以通过在.vimrc中设置全局变量(global variable)来修改。
let g:C MapLeader=‘,’这样就映射的头就是‘,’(comma)了。
例如你可以这样用,cl来插入行末的注释。
∗此手册参考VIM的插件cvim的文档写成,该插件是一个C/C++-IDE for Vim/gVim。
本文基于版本version5.10。
†E-mail:ustbyangcheng@1Hint:该pdf中以‘\’开头和后面字符的组合只有在一个short time内才能被识别。
在插入模式下这些映射可以以‘`’(backtick)开头(不过经过试验,貌似也不必如此,直接输入也可以,但速度要快。
)。
读者可以参考该pdf文档,本文下一页就罗列这些key mapping了。
1V IM-P LUGINc-support.vimV ERSION5.10H OT KEYSKey mappings for Vim with and without GUI.Plugin:(i)insert mode,(n)normal mode,(v)visual modeC omments \cl end-of-line comment(n,v,i) \cj adjust end-of-line comment(n,v,i) \cs set end-of-line comment column(n) \c*code⇒comment/**/(n,v) \cc code⇒comment//(n,v) \co comment⇒code(n,v) \cfr frame comment(n,i) \cfu function comment(n,i) \cme method description(n,i) \ccl class description(n,i) \cfdifile description(implementation)(n,i) \cfdhfile description(header)(n,i) \ccs C/C++–file sections(tab compl.)(n,i) \chs H–file sections(tab compl.)(n,i) \ckc keyword comment(tab compl.)(n,i) \csc special comment(tab compl.)(n,i) \cd date(n,v,i) \ct date&time(n,v,i)S tatements\sd do{}while(n,v,i)\sf for(n,i)\sfo for{}(n,v,i)\si if(n,i)\sif if{}(n,v,i)\sie if else(n,v,i)\sife if{}else{}(n,v,i)\se else{}(n,v,i)\sw while(n,i)\swh while{}(n,v,i)\ss switch(n,v,i)\sc case(n,i)\s{\sb{}(n,v,i)P reprocessor\ps choose a Std.Lib.include(n,i)\pc choose a C99include(n,i)\p<#include<...>(n,i)\p"#include"..."(n,i)\pd#define(n,i)\pu#undef(n,i)\pie#if#else#endif(n,v,i)\pid#ifdef#else#endif(n,v,i)\pin#ifndef#else#endif(n,v,i)\pind#ifndef#def#endif(n,v,i)\pi0#if0#endif(n,v,i)\pr0remove#if0#endif(n,i)\pe#error(n,i)\pl#line(n,i)\pp#pragma(n,i)S n ippet\nr read code snippet(n,i)\nw write code snippet(n,v,i)\ne edit code snippet(n,i)\np pick up prototype(n,v,i)\ni insert prototype(s)(n,i)\nc clear prototype(s)(n,i)\ns show prototype(s)(n,i)\ntl edit local templates(n,i)\ntg edit global templates(n,i)\ntr reread the templates(n,i)\nts change templates style(n,i)I dioms\if function(n,v,i)\isf static function(n,v,i)\im main()(n,v,i)\i0for(x=0;x<n;x+=1)(n,v,i)\in for(x=n-1;x>=0;x-=1)(n,v,i)\ie enum+typedef(n,v,i)\is struct+typedef(n,v,i)\iu union+typedef(n,v,i)\ip printf()(n,i)\isc scanf()(n,i)\ica p=calloc()(n,i)\ima p=malloc()(n,i)\isi sizeof()(n,v,i)\ias assert()(n,v,i)\ii open inputfile(n,v,i)\io open outputfile(n,v,i)February2010c-support.vim Page1/2C++ \+co cout<<<<endl;(n,i) \+c class(n,i) \+ps#include<...>STL(n,i) \+pc#include<c..>C(n,i) \+cn class(using new)(n,i) \+ci class implementation(n,i) \+cni class(using new)implementation(n,i) \+mi method implementation(n,i) \+ai accessor implementation(n,i) \+tc template class(n,i) \+tcn template class(using new)(n,i) \+tci template class implementation(n,i) \+tcni template class(using new)impl.(n,i) \+tmi template method implementation(n,i) \+tai template accessor implementation(n,i) \+tf template function(n,i) \+ec error class(n,i) \+tr try...catch(n,v,i) \+ca catch(n,v,i) \+c.catch(...)(n,v,i)R un \rc save and compile(n,i) \rl link(n,i) \rr run(n,i) \ra set comand line arguments(n,i) \rm run make(n,i) \rg cmd.line arg.for make(n,i) \rp run splint1(n,i) \ri cmd.line arg.for splint(n,i) \rk run CodeCheck2(n,i) \re cmd.line arg.for CodeCheck(n,i) \rd run indent(n,i) \rh hardcopy buffer(n,i,v) \rs show plugin settings(n,i) \rx set xterm size(n,i,only Unix&GUI) \ro change output destination(n,i)H elp and Menus\hm show manual(n,i)\hp help(c-support)(n,i)\lcs load Menus(n&GUI only)\ucs unload Menus(n&GUI only)Ex commands:CFileSection C/C++–file sections(same as\ccs)HFileSection H–file sections(same as\chs)KeywordComment keyword comment(same as\ckc)SpecialComment special comment(same as\csc)IncludeStdLibrary standard libraryincludes(same as\ps)IncludeC99Library C99includes(sameas\pc)IncludeCppLibrary STL includes(same as\+ps)IncludeCppCLibrary C includes(sameas\+pc)CStyle C99include(same as\nts)Use tab expansion to show the items tochoose from.2CodeCheck T M is a product of Abraxas Software,Inc.Additional Mappingstyping expansion/*/**/(i)/*/*(multiline)marked text*/(v)/*<CR>/*(i)*|*/{<CR>{(i)|}{<CR>{(v)(multiline)marked text}February2010c-support.vim Page2/22快捷键HOTKEYS下面的快捷键在三种模式下均可使用:F9编译和链接compile and linkAlt-F9保存并编译write buffer and compileCtrl-F9运行run executableShift-F9设置命令参数set command line argumentsShift-F22在源文件和头文件之间切换switch betweensourcefiles and headerfiles为了防止在切换一个源文件时出现新的头文件,可以在.vimrc中包含下面这一行:let g:alternateNoDefaultAlternate=1这样只有存在的头文件才会被打开。