当我打开新文件时,是否要让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: ...
等。我已经四处寻找,但我找不到解决办法。
答案 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
执行类似操作。