Как использовать шаблон в vim

Это действительно вопрос новичков, но в основном, как включить шаблон для определенных типов файлов.

В принципе, я просто хочу, чтобы шаблон вставлял заголовок сортировки, то есть с некоторыми функциями, которые я нахожу полезными, и загруженными библиотеками и т.д.

Я интерпретирую

:help templates

способ, которым я должен поместить это в мой vimrc

au BufNewFile,BufRead ~/.vim/skeleton.R

Запуск R script затем показывает, что что-то может произойти, но, по-видимому, нет:

--- Auto-Commands ---

Это может быть потому, что шаблон состоит из команд (и их нет в skeleton.R) - и в этом случае я просто хочу, чтобы он вставлял текстовый заголовок (из которого состоит skelton.R).

Извините, если этот вопрос - глупость ума, -/

Ответы

Ответ 1

Команда, которую вы предложили, не будет работать: что это будет делать, не запускайте команду Vim при открытии ~/.vim/skeleton.R

Грубый способ добиться того, что вы хотите использовать:

:au BufNewFile *.R r ~/.vim/skeleton.R

Это будет читать (:r) ваш файл всякий раз, когда создается новый *.R файл. Вы хотите избежать BufRead в autocmd, или он будет читать файл скелета в ваш рабочий файл каждый раз, когда вы откроете файл!

Есть много плагинов, которые добавляют к этому процессу намного больше контроля. Будучи автором и поэтому полностью предвзятым, я бы рекомендовал этот, но есть много других, перечисленных в списке .


Бесстыдный штекер:

Все они работают относительно схожим образом, но для объяснения моего script:

Вы устанавливаете плагин, как описано на странице , а затем создайте несколько шаблонов в ~/.vim/templates. Эти шаблоны должны иметь такое же расширение, что и "целевой" файл, поэтому, если это шаблон для файлов .R, назовите его чем-то вроде skeleton.R. В .vimrc добавьте что-то вроде этого:

let g:file_template_default = {}
let g:file_template_default['R'] = 'skeleton'

Затем создайте новый .R файл (с именем файла, так что сохраните его, если он новый) и введите:

:LoadFileTemplate

Вы также можете пропустить редактирование .vimrc и просто выполните:

:LoadFileTemplate skeleton

Подробнее см. веб-сайт.

Ответ 2

Предположим, что ваши скелеты находятся в каталоге ~/.vim/templates/, вы можете поместить это фрагмент файла vimrc.

augroup templates
  au!
  " read in templates files
  autocmd BufNewFile *.* silent! execute '0r ~/vim/templates/skeleton.'.expand("<afile>:e")
augroup END

Некоторые объяснения,

  • BufNewFile. = каждый раз, когда мы редактируем новый файл
  • молчать! выполнить = выполнить молча, без сообщений об ошибках
  • 0r = читать файл и вставлять содержимое вверху (0) в новый файл
  • expand ( ": e" ) = получить расширение текущего имени файла

см. также http://vim.wikia.com/wiki/Use_eval_to_create_dynamic_templates

Ответ 3

Создайте подкаталог шаблонов в папке ~/.vim

$ mkdir -p ~/.vim/templates

Создайте новый файл в подкаталоге R.skeleton и поместите в заголовок и/или другой материал, который вы хотите автоматически загрузить при создании нового файла .R.

$ vim ~/.vim/templates/R.skeleton

Затем добавьте следующее в ваш файл ~/.vimrc, который может быть предложен способом "гость"

autocmd BufNewFile * silent! 0r $HOME/.vim/templates/%:e.skeleton

Посмотрите мой репозиторий github для получения более подробной информации и других параметров.

Ответ 4

Это просто трюк, который я использовал. Это дешево, но если вы ничего не знаете о vim, и это упрощает управление. создайте каталог следующим образом:

~/.vim/templates/barney.cpp

и поскольку вы konw barney.cpp должны быть вашим кодом шаблона. затем добавьте функцию типа ForUncleBarney() в конец вашего файла .vimrc, расположенного в ~/.vimrc это должно быть как

function ForBarneyStinson()
   :read ~/.vim/templates/barney.cpp
endfunction

то просто используйте эту команду в vim

:call ForBarneyStinson()

то вы видите свой шаблон в качестве примера у меня уже есть два шаблона для .cpp файлов

:call ForBarney()
:call ACM()

Извините, сказал слишком много, Кодирование потрясающее!:)

Ответ 5

Также посмотрите https://github.com/aperezdc/vim-template.git.

Я использую его и внесли некоторые исправления в него и утверждаю его относительно полнофункциональный.

Ответ 6

Существует много расширителей шаблонов файлов - вы также найдете там пояснения о том, как реализовать рудиментарный расширитель шаблонов файлов.

Со своей стороны, я поддерживаю вилку muTemplate. Для простого запуска просто отпустите файл {ft}.template в {rtp}/template/. Если вы хотите использовать любую (viml) переменную или выражение, просто выполните. Вы даже можете поместить код vim (и теперь даже функции) в файл шаблона, если хотите. Несколько интеллектуальных решений уже реализованы для файлов С++ и vim.

Ответ 7

Как насчет использования плагина snipmate? См. здесь