Подтвердить что ты не робот

Как я могу автоматически добавить код скелета при создании нового файла с помощью vim

При создании нового файла с помощью vim я хотел бы автоматически добавить код скелета.

Например, при создании нового xml файла я хотел бы добавить первую строку:

  <?xml version="1.0"?>

Или при создании html файла я хотел бы добавить:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title></title>
  </head>
  <body>
  </body>
</html>
4b9b3361

Ответ 1

Если вы хотите адаптировать свой скелет к контексту или к выбору пользователя, посмотрите плагины шаблона-расширителя, перечисленные в vim.wikia

Ответ 2

У меня есть что-то вроде этого в моем .vimrc:

au BufNewFile *.xml 0r ~/.vim/xml.skel | let IndentStyle = "xml"
au BufNewFile *.html 0r ~/.vim/html.skel | let IndentStyle = "html"

И так далее, что бы вам ни понадобилось.

Ответ 3

Вы можете сохранить свой скелет/шаблон в файл, например ~/vim/skeleton.xml

Затем добавьте следующее к вашему .vimrc

augroup Xml
    au BufNewFile *.xml 0r ~/vim/skeleton.xml
augroup end

Ответ 4

Извините за опоздание, но я чувствую, что способ Я делаю это, может быть полезен для некоторых. Он использует файл filetype, делая его более коротким и динамичным, чем более обычные методы. Он был протестирован только на Vim 7.3.

if has("win32") || has ('win64')
    let $VIMHOME = $HOME."/vimfiles/"
else
    let $VIMHOME = $HOME."/.vim/"
endif

" add templates in templates/ using filetype as file name
au BufNewFile * :silent! exec ":0r ".$VIMHOME."templates/".&ft

Ответ 5

Вот два примера, использующие скрипты python.

Добавьте что-то подобное в ваш .vimrc или другой файл, полученный вашим .vimrc:

augroup Xml
  au BufNewFile *.xml :python import vim
  au BufNewFile *.xml :python vim.current.buffer[0:0] = ['<?xml version="1.0"?>']
  au BufNewFile *.xml :python del vim
augroup END

fu s:InsertHtmlSkeleton()
  python import vim
  python vim.current.buffer[0:0] = ['<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', "<html>", "<head>", "  <title></title>", "</head>", "<body>", "", "</body>", "</html>"]
  python del vim
endfu

augroup Html
  au BufNewFile *.html call <SID>InsertHtmlSkeleton()
augroup END

Ответ 6

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

:help event

и прочитайте, что там. Вы хотите

:help BufNewFile

Ответ 7

Он может работать и с snipmate:

augroup documentation
    au!
    au BufNewFile *.py :call ExecuteSnippet('docs')
augroup END

function! ExecuteSnippet(name)
    execute "normal! i" . a:name . "\<c-r>=TriggerSnippet()\<cr>"
endfunction

с "docs" фрагмент для запуска.

Он работает с несколькими фрагментами, но затем появляется окно сообщений: и оно громоздко.