vim 自动添加文件注解(针对php和js文件)

我们在开始一个新的项目的时候总想对所有的文件加一点注释信息,例如版权呀,作者呀,文件创建的时间呀等等。那么用VIM 是怎么做到的呢?

修改.vimrc文件

首先需要修改下vimrc的配置文件,让vim 在创建新文件的时候自动补齐那些信息。添加的部分如下:

autocmd BufNewFile *.php,*.js exec ":call SetComment()"

func SetComment()
        if expand("%:e") == 'php'
                call setline(1,"<?php")
        elseif expand("%:e") == 'js'
                call setline(1,"// JavaScript file")
        endif
        call append(line("."),   "/*")
        call append(line(".")+1,   "  +----------------------------------------------------------------------+")
        call append(line(".")+2, "  | LazyApiDoc                                                           |")
        call append(line(".")+3, "  +----------------------------------------------------------------------+")
        call append(line(".")+4, "  | LazyApiDoc is a tool for restful interface document manager.         |")
        call append(line(".")+5, "  | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )              |")
        call append(line(".")+6, "  +----------------------------------------------------------------------+")  
        call append(line(".")+7, "  | Author:lazypeople <lazy@changes.com.cn>                              |")
        call append(line(".")+8, "  +----------------------------------------------------------------------+")
        call append(line(".")+9, "*/")
        call append(line(".")+10, " ")
        call append(line(".")+11, "/*".expand("%:t")." ".strftime("%Y/%m/%d %H:%M:%S %Z")." lazypeople*/")  
endfunc

主要是autocmd BufNewFile *.php,*.js exec “:call SetComment()”让vim在创建文件的时候可以知道到底是不是php或者js文件,这个是依赖创建时的后缀名决定的。当然如果你不是php程序员,当然可以按照上述的例子修改成为你的语言,例如.py .c .cpp .pl等等.如果相对所有的文件都加上注解,这个可能不是很好办,因为不同文件的注解形式是不一样的,例如你对c语言的注解就无法用在html文件中。

测试

lazy@lazy-Latitude-E5420:~/workspace/lazyapidoc$ vim testAutoCommit.php

可以看到生成的文件:

  1 <?php                                                                          
  2 /*                                                                              
  3   +----------------------------------------------------------------------+      
  4   | LazyApiDoc                                                           |      
  5   +----------------------------------------------------------------------+      
  6   | LazyApiDoc is a tool for restful interface document manager.         |      
  7   | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )              |      
  8   +----------------------------------------------------------------------+      
  9   | Author:lazypeople <lazy@changes.com.cn>                              |      
 10   +----------------------------------------------------------------------+      
 11 */
                                                                             
 12                                                                                
 13 /*testAutoCommit.php 2013/10/11 10:21:11 CST lazypeople*/