четверг, 10 марта 2011 г.

vim и шаблоны

А начну я, пожалуй, с самого главного инструмента программиста — текстового редактора. Моим главным инструментом является текстовый редактор vim.

Речь в первой заметке пойдет о шаблонах для новых файлов в vim. Шаблонами в этом замечательном текстовом редакторе сегодня никого не удивишь, но я добавил немного от себя. А именно шаблонных переменных.



Добавим в .vimrc такие строки:

autocmd BufNewFile  *.c     0r ~/.vim/templates/c
autocmd BufNewFile  *.cpp   0r ~/.vim/templates/c
autocmd BufNewFile  *.h     0r ~/.vim/templates/h
autocmd BufNewFile  *       call s:format_template()
Теперь, создавая файлы с расширением c, cpp и h, vim будет вставлять в буфер содержимое файла из ~/.vim/templates. Остается добавить определение функции s:format_template():
 function! s:format_template()
    set report=999

    let filename = expand('%:t')
    execute '%s/%vim%filename%/' . filename . '/geI'
    let header_var = substitute(toupper(filename), '\.', '_', 'ge')
    execute '%s/%vim%header_var%/' . header_var . '/geI'
    execute '%s/%vim%year%/\=strftime("%Y")/geI'

    set report=2
endfunction
Функция всего лишь подставляет вместо строк вида «%vim%*%» некоторые значения. Например, строка «%vim%filename%» замещается именем редактируемого файла.

Просто, гибко и удобно.

3 комментария:

  1. "tmp.c" [Новый файл]
    Обнаружена ошибка при обработке BufNewFile Автокоманды для "*.c":
    E484: Невозможно открыть файл /home/user_name/.vim/templates/c
    Press ENTER or type command to continue

    А шаблонами поделишься? :) А то вдруг снова пересяду на vim :)

    ОтветитьУдалить
  2. Напимер так:

    % cat ~/.vim/templates/c
    /*
    * %vim%filename%
    *
    *
    * Copyright (C) %vim%year% FirstName SurName
    *
    */

    По сути, шаблон — это просто текстовый файл, который вставляется в новый буфер.

    ОтветитьУдалить
  3. А, ну тогда не очень интересно :)

    ОтветитьУдалить