The Kai Way

Pragmaticly hacking

c.vim简介

| Comments

c.vim(C-support)是一个vim插件,C/Cpp开发的助推器,这个系列还有一个lua和Bash的版本。

不废话了,先看看它的主要功能先。

首先是代码模板:

  -- Statements ---------------------------------------------------------

  \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)
  \sw       while                               (n,i)
  \swh      while { }                           (n,v,i)
  \ss       switch                              (n,v,i)
  \sc       case                                (n,i)
  \s{       { }                                 (n,v,i)

  -- Preprocessor -------------------------------------------------------

  \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      #if 0 #endif                        (n,v,i)
  \pr0      remove #if 0 #endif                 (n)
  -- Idioms -------------------------------------------------------------

  \if       function                            (n,v,i)
  \isf      static function                     (n,v,i)
  \im       main()                              (n,v,i)
  \i0       for( 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,i)
  \is       struct + typedef                    (n,i)
  \iu       union  + typedef                    (n,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)
  \ii       open input file                     (n,i)
  \io       open output file                    (n,i)

  -- Snippets -----------------------------------------------------------

  \nr       read code snippet                   (n)
  \nw       write code snippet                  (n,v)
  \ne       edit code snippet                   (n)
  \np       pick up prototype                   (n,v)
  \ni       insert prototype(s)                 (n)
  \nc       clear  prototype(s)                 (n)
  \ns       show   prototype(s)                 (n)

  -- C++ ----------------------------------------------------------------

  \+c       class                               (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)

这个表最左边的就是按键,中间就是对应的模板,最后面是对应的模式。n是normal,i就是插入模式,v是虚拟模式。展开的模板放在 ~/.vim/c-support/templates 这里,自己可以hack,比如第一件事就是把Templates中的个人资料改一下。我还把函数声明改了一下,默认是把返回值类型放到上一行,看起来不爽。

然后就是编译链接和运行代码啦,我只用快捷键。

       F9   compile and link
   Alt-F9   write buffer and compile
  Ctrl-F9   run executable
 Shift-F9   set command line arguments

 Shift-F2   switch between source files and header files

有了这些快捷键之后加上Vim7本身就有的一点点补全功能,其实这个工具也有些IDEful了。

最后看看一些实用功能,比如代码和注释的转化,还有行尾插入注释,插入注释行等等。

-- Comments -----------------------------------------------------------

\cl       end-of-line comment                 (n,v,i)
\cj       adjust end-of-line comment(s)       (n,v,i)
\cs       set end-of-line comment column      (n)
\c*       code -> comment /* */               (n,v)
\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)
\cd       date                                (n,i)
\ct       date \& time                        (n,i)

有空试用一下lua-support和bash-support。其实一直想写篇rails.vim的配置和使用和一点点Src分析。