Как использовать шаблон в Vim - PullRequest
19 голосов
/ 24 сентября 2010

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

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

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

:help templates

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

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

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

--- Auto-Commands ---

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

Извините, если этот вопрос тупой; - /

Ответы [ 7 ]

26 голосов
/ 24 сентября 2010

Команда, которую вы предложили, не будет работать: она не будет запускать команду 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

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

9 голосов
/ 26 августа 2013

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

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

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

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

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

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

6 голосов
/ 02 августа 2015

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

$ mkdir -p ~/.vim/templates

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

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

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

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

Посмотрите мой репозиторий github , чтобы узнать больше подробностей и другие опции.

2 голосов
/ 01 марта 2015

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

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

2 голосов
/ 10 декабря 2014

Это просто трюк, который я использовал. Это дешево, но если вы ничего не знаете о 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()

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

1 голос
/ 24 сентября 2010

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

1 голос
/ 24 сентября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...