如何拥有python文件的自动标头

时间:2011-06-01 12:41:37

标签: python vim

在python中描述了一个正确的标题格式 here

使用VIM或shell脚本,我希望将通常的元数据(如__author__, __authors__, __contact__, __copyright__, __license__, __deprecated__, __date__ and __version__)添加到文件头中。 SVN关键字也不错。将其添加到新文件是最相关的。将它添加到现有文件是一个额外的好处。

Ruslan's Blog 为Emacs提供了解决方案。但我无法找到Python的解决方案。

没有Emacs的python在哪里做过? VIM可以将文本从一个文件复制到另一个文件 like so ,但也许有更好的方法。

3 个答案:

答案 0 :(得分:6)

我强烈推荐snipMate插件。您可以轻松地为每种文件类型添加新剪辑,只需键入关键字并点击标签即可触发它们,例如,您可以点击

header<TAB>

并且将添加所有字段,您可以轻松地标记需要按文件填写的任何字段。在内置的python片段(vimfiles / snippets / python.snippets)中甚至已经有一个名为docs的片段,看起来它填写了类似的文档字符串元数据,您可以根据自己的需要轻松修改它们,这里是一个例子。剪辑格式:

# Module Docstring
snippet docs
    '''
    File: ${1:`Filename('$1.py', 'foo.py')`}
    Author: ${2:`g:snips_author`}
    Description: ${3}
    '''

使用剪辑中的反引号支持动态条目(Filename和g:snips_author作为上面的tabbable条目1和2的默认值)。可以添加日期:

`system("date +%Y-%m-%d")`

(来自snipMate帮助文档)。

答案 1 :(得分:4)

这是我的C ++文件模板:

/*****************************************************************************
 * @file <file_name>
 *
 * @date <date>
 * @author John Doe
 * @email jdoe@yourcompany.com
 *
 * @brief
 *
 * @detail
 *
 *****************************************************************************/

以下是~/.vimrc内的内容:

" Reads the template file replacing the tags by the actual
" information and insert the result at the beginning of the buffer. At
" the end, creates two blank lines at the end of the file and
" position the cursor at the first one.
function! s:insert_description()
    let template = $HOME . "/.vim/template/cpp.template"
    let file_name = expand("%:t") " Get file name without path
    let date = strftime("%Y") " Get the current year in format YYYY
    let i = 0
    for line in readfile(template)
        let line = substitute(line, "<file_name>", file_name, "ge")
        let line = substitute(line, "<date>", date, "ge")
        call append(i, line)
        let i += 1
    endfor
    execute "normal! Go\<Esc>k"
endfunction
autocmd BufNewFile *.{c++,cpp,cc,c,h,hpp} call <SID>insert_description()

基本上,我读取模板文件替换标签和实际信息,并在新创建的文件的开始处插入结果。只要vim创建了一个新文件,就会调用函数s:insert_description()。这是由最后一行的autocmd设置的。

您可以自己编写此代码并为python创建等效代码。

答案 2 :(得分:0)

转到http://www.vim.org并在那里搜索“新文件模板”,你会得到大量解决这类问题的插件,所以看看它们并选择一个。