5

当我打开一个新文件时,是否可以让 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

3 回答 3

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:
于 2012-05-25T03:21:35.473 回答
3

这在 vim autocmd 帮助中有所介绍.. 特别是你想要这个

于 2012-05-25T02:55:01.897 回答
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 脚本时尽可能使用较长的形式,除非我在打高尔夫球,因为我重视代码的可读性,而普通命令是晦涩难懂的)。

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

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

请注意,我为 Python 提供了一个空的注释字符。那是因为我'''的文件头中有用于评论的字符串。你可以使用'# ''## '任何你喜欢的东西。

你可以用Created.

于 2012-09-22T13:26:00.163 回答