Vim html.erb фрагменты?? snipMate нужен совет vim
Когда я нахожусь в файле html.erb, я не получаю сниппеты snipMate.
Я хотел бы и HTML и Ruby, или просто HTML был бы в порядке. Как бы я это сделал?
Нужно ли мне писать набор фрагментов?
Если да, есть ли способ добавить существующие фрагменты без их копирования?
Есть ли способ сказать vim перейти в режим html, когда он видит.html erb?
7 ответов
Фрагменты хранятся в каталоге под названием snippets
где-то в вашем ~/.vim
папка.
Если вы посмотрите там, то обычно есть один файл для каждого типа файла, есть c.snippets, ruby.snippets, так что, похоже, вам нужно создать файл erb.snippets с тем, что вы хотите.
В конце концов вы можете скопировать содержимое ruby.snippets и html.snippets в свои новые erb.snippets.
В качестве альтернативы вы можете искать на github, некоторые люди опубликовали свою собственную конфигурацию erb.snippets. Например, там есть хорошая коллекция: https://github.com/scrooloose/snipmate-snippets
Лучше всего сначала попытаться открыть файл сниппета и посмотреть на синтаксис, довольно легко создать свой собственный сниппет в зависимости от того, что вы используете чаще всего.
Вы можете использовать autocmd
установить тип файла html при открытии файла.html.erb. Это может иметь нежелательные побочные эффекты для плагинов, которые работают с файлами ".erb".
autocmd BufNewFile,BufRead *.html.erb set filetype=html
Вы также можете загрузить более одного набора фрагментов, используя точечный тип файла:
autocmd BufNewFile,BufRead *.html.erb set filetype=html.eruby
Увидеть :help snippet-syntax
в помощи snipMate для получения дополнительной информации.
В настоящее время я участвую в рекламном туре UltiSnips на Stackru. UltiSnips поддерживает расширение других типов файлов, ваши erb.snippets будут выглядеть так:
extends html, ruby, rails
snippet temp "A snippet only in Erb"
erb rules ${1}
endsnippet
Сценарий преобразования для фрагментов snipMate поставляется с UltiSnips, поэтому переключение легко.
Я использовал метод autocommand для установки типа файла, но затем я получил html синтаксические ошибки для таких вещей:
<%= image_tag("logo.png", :alt => "Sample App", :class => "round") %>
Последние две угловые скобки будут выделены красным, что привело меня в замешательство. Итак, я создал символическую ссылку с именем eruby.snippets, которая указывает на html.snippets. Это работало как чемпион, и теперь мне не нужно вносить изменения в двух местах. У меня также есть каталог фрагментов eruby-rails для не-HTML фрагментов eruby.
Это в системе Mac OS X. Обратите внимание, что псевдоним не будет работать. Вам нужно нажать на терминал и использовать команду ln. Не уверен насчет того, чтобы сделать это в системе Windoze.
Вы можете назначить несколько областей фрагментов одному типу файла. (Я обнаружил, что изменение типа файла приводит к нарушению подсветки синтаксиса).
Вы можете проверить, что тип файла для файлов erb действительно 'eruby' с помощью:
:set filetype?
Если вы используете поддерживаемый форк snipmate, похоже, что вам понадобятся и eruby.snippets, и eruby-rails.snippets из репозитория snipmate-snippets (принадлежащего honza, но у меня недостаточно репутации для ссылки к этому здесь) (см. раздел УСТАНОВКИ README для снипмата для правильной настройки).
Если вы используете поддерживаемый ответвление, я полагаю, что настройка g:snipMate.scope_aliases в вашем.vimrc со следующим будет работать для вашего примера:
let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['eruby'] = 'eruby,eruby-rails'
Я добавил pull-запрос к snipmate, чтобы обновить их документацию.
Прыжки на подножку UltiSnips после некоторой попытки SnipMate. Как упомянул SirVer, наличие фрагментов html, ruby и т. Д. В пределах *.erb
файл был так же прост, как добавление строки расширения к eruby.snippets
файл.
С оригинальным плагином snipMate создайте файл ~/.vim/ftplugin/erb_snippets.vim
и вставьте в него следующее:
silent call ExtractSnipsFile(g:snippets_dir . 'html.snippets', &l:filetype)
silent call ExtractSnipsFile(g:snippets_dir . 'ruby.snippets', &l:filetype)