在Vim中创建自动文档注释

时间:2012-05-24 22:45:12

标签: vim comments auto-generate

当我打开新文件时,是否要让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: ...

等。我已经四处寻找,但我找不到解决办法。

3 个答案:

答案 0 :(得分: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:

答案 1 :(得分:3)

这包含在vim autocmd帮助中..特别是你想要this

答案 2 :(得分: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执行类似操作。