2012-05-24 36 views
5

当我打开一个新文件时,是否需要Vim创建一个基于文件类型的注释blurb?在Vim中创建自动文档注释

我是Vim的新手。这是我正在寻找的功能。当我这样做:

$ vim hello.py 

我要开始文件与:

#Date Created: 24 May 2012 
#Last Modified: (This is optional, really) 
#Summary: (enter short summary of program here) 
#Author: My Name 
#License: ... 

等找遍四周,但我不能找到一个解决方案来做到这一点。

回答

4

你能做到这一点,而不使用下面的框架文件:

autocmd BufNewFile *.py exe "normal O#Date Created: " . strftime("%d %b %Y") . "\r#Last Modified:\r#Summary:\r#Author:\r#License:\r" 
autocmd BufWritePre *.py exe "%s/^#Last Modified:.*$/#Last Modified: " . strftime("%d %b %Y (%T)") . "/e" 

把那些在你的vimrc

一个潜在的问题是,autocmd BufWritePre将当前时间追加到所有行开头:

#Last Modified: 
3

这在VIM自动命令的帮助覆盖..特别想this

1

这个答案是基于pb2q的,但使它更具可扩展性。定义一个函数来完成创作,所以你可以使用它的各种意见类型:

function UpdateModifiedTime(comment) 
    let savedPosition = getpos(".") 
    call cursor(1, 1) 
    let modified = a:comment . 'Modified:' 
    if search(modified, 'e') > 0 
     execute 'substitute/' . modified . '.*/' . modified . ' ' . strftime('%b %d, %Y %T') . '/' 
    endif 
    call setpos(".", savedPosition) 
endfunction 

(注:这是我的做法是使用较长的形式尽可能在脚本Vim的,除非我golfing,因为我重视代码的可读性和正常的命令是神秘的)。

然后,您可以定义自动命令,如:

autocmd BufWrite *.sh,*.ksh,*.bash  call UpdateModifiedTime('## ') 
autocmd BufWrite *.vim     call UpdateModifiedTime('" ') 
autocmd BufWrite *.py     call UpdateModifiedTime('') 
autocmd BufWrite *.c      call UpdateModifiedTime('// ') 

注意,我给了一个空的注释字符为Python。这是因为我的文件头中有'''字符串用于评论。您可以使用'# ''## '或任何您喜欢的痒痒。

您可以使用Created做类似的事情。