Как иметь автоматические заголовки для файлов Python - PullRequest
4 голосов
/ 01 июня 2011

Правильный формат заголовка в Python описан здесь .

Используя VIM или сценарий оболочки, я бы хотел добавить к заголовку файла обычные метаданные (например, __author__, __authors__, __contact__, __copyright__, __license__, __deprecated__, __date__ and __version__). Ключевые слова SVN тоже подойдут. Добавление его в новые файлы является наиболее актуальным. Добавление его в существующие файлы является бонусом.

Блог Руслана предлагает решение для Emacs. Но мне не удалось найти решение для Python.

Где это было сделано для python без Emacs? VIM может копировать текст из одного файла в другой примерно так же , но, возможно, есть более хороший способ.

Ответы [ 3 ]

6 голосов
/ 01 июня 2011

Я настоятельно рекомендую плагин snipMate .Вы можете легко добавлять новые фрагменты для каждого типа файлов, и они запускаются, просто набрав ключевое слово и нажав на вкладку, так что, например, вы можете просто нажать

header<TAB>

, и все поля будут добавлены, и выможет легко пролистывать любые, которые требуют заполнения для каждого файла.Во встроенных фрагментах Python уже есть фрагмент под названием docs (vimfiles / snippets / python.snippets), который выглядит так, как будто он заполняет аналогичные метаданные для строк документации, которые вы можете легко изменить для своих целей, здесь это примерформат сниппа:

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

Динамические записи поддерживаются с помощью обратных ссылок в вашем фрагменте (имя файла и g: snips_author по умолчанию для вкладок с записями 1 и 2 выше).Дата может быть добавлена ​​с помощью:

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

(из справочного документа snipMate).

4 голосов
/ 01 июня 2011

Вот мой шаблон 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()

В основном я читаю файл шаблона, заменяя тегис актуальной информацией и вставьте результат в начале вновь созданного файла.Функция s:insert_description() вызывается всякий раз, когда vim создает новый файл.Это устанавливается autocmd в последней строке.

Вы можете основываться на этом коде и создать эквивалент для python.

0 голосов
/ 01 июня 2011

Просто перейдите на http://www.vim.org и найдите там "новый шаблон файла", и вы получите тонны плагинов, которые решают эту проблему, поэтому посмотрите на них и выберите один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...