Как использовать шаблон в 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? См. здесь