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

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

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

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

:help templates

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

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

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

--- Auto-Commands ---

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

Извините, если этот вопрос ошеломляет глупо; - /

 Kevin Lee31 дек. 2013 г., 19:45
Это только у меня или перед шаблоном каждый раз при создании нового файла добавляется пустая строка? В любом случае, чтобы избавиться от новой строки?

Ответы на вопрос(7)

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

~/.vim/templates/barney.cpp

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

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

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

:call ForBarneyStinson()

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

:call ForBarney()
:call ACM()

извини, сказал слишком много, кодирование это круто! :)

что ваши скелеты находятся в вашем каталоге ~ / .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

* исправлена ​​пропущенная точка в пути к файлу

Решение Вопроса

она не будет запускать команду Vim при каждом открытии~/.vim/skeleton.R

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

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

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

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

Бесстыдная вилка:

Все они работают относительно одинаково, но для объяснения моего сценария:

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

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

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

:LoadFileTemplate

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

:LoadFileTemplate skeleton

Увидетьвеб-сайт Больше подробностей.

 Kevin Lee01 янв. 2014 г., 23:59
использование0r вместоr и вставка не будет добавлять в пустую строку.
 Andreas24 сент. 2010 г., 13:10
Beauti-разветвление-полный - очень хороший ответ - проведя меня по ступеням. Большое спасибо. Пока что грубый метод работает для того, что я намеревался, но я скачал расширение и посмотрю, как я могу его использовать :-) - спасибо.

расширители файла шаблона - вы также найдете там объяснения о том, как реализовать элементарный расширитель файла шаблона.

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

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

$ mkdir -p ~/.vim/templates

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

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

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

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

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

Также взгляните наhttps://github.com/aperezdc/vim-template.git.

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

Ваш ответ на вопрос