Vim html.erb фрагменты ??snipMate нужен совет vim - PullRequest
13 голосов
/ 11 января 2011

Когда я нахожусь в файле html.erb, я не получаю сниппеты snipMate.

Я бы хотел, чтобы и HTML, и Ruby, или просто HTML, были бы хороши, Как бы я это сделал?

Нужно ли мне писать набор фрагментов?

Если это так, есть ли способ извлечь существующие фрагменты без их копирования?

Есть ли способ заставить vim перейти в режим html, когда он видит .html erb?

Ответы [ 7 ]

17 голосов
/ 11 января 2011

Вы можете использовать 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 для получения дополнительной информации.

12 голосов
/ 11 января 2011

Фрагменты хранятся в каталоге с именем snippets где-то в папке ~/.vim.

Если вы посмотрите там, обычно есть один файл для каждого типа файла, есть c.snippets, ruby.snippets, так что вам нужно создать erb.snippets там с тем, что вы хотите. 1005 *

В конечном итоге вы можете скопировать содержимое ruby.snippets и html.snippets в свои новые erb.snippets.

В качестве альтернативы вы можете искать на github, некоторые люди опубликовали свою собственную конфигурацию erb.snippets. Например, там есть хорошая коллекция: https://github.com/scrooloose/snipmate-snippets

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

8 голосов
/ 27 июля 2011

В настоящее время я участвую в рекламном туре для UltiSnips в StackOverflow.UltiSnips поддерживает расширение файлов других типов, ваши erb.snippets будут выглядеть следующим образом:

extends html, ruby, rails

snippet temp "A snippet only in Erb"
erb rules ${1}
endsnippet

Скрипт преобразования для фрагментов snipMate поставляется с UltiSnips, поэтому переключение легко.

3 голосов
/ 17 марта 2011

Я использовал метод autocommand для установки типа файла, но затем я получил html синтаксические ошибки для таких вещей:

<%= image_tag("logo.png", :alt => "Sample App", :class => "round") %>

Последние две угловые скобки будут выделены красным, что привело меня в замешательство. Итак, я создал символическую ссылку с именем eruby.snippets, которая указывает на html.snippets. Это работало как чемпион, и теперь мне не нужно вносить изменения в двух местах. У меня также есть каталог фрагментов eruby-rails для не-HTML фрагментов eruby.

Это в системе Mac OS X. Обратите внимание, что псевдоним не будет работать. Вам нужно нажать на терминал и использовать команду ln. Не уверен в этом в системе Windoze.

2 голосов
/ 08 января 2012

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

Вы можете проверить, что тип файла для файлов erb действительно 'eruby' с помощью:

:set filetype?

Если вывы используете поддерживаемый форк snipmate , похоже, вы захотите и eruby.snippets, и eruby-rails.snippets из репозитория snipmate-snippets (принадлежащего honza, но у меня нетрепутации достаточно, чтобы сослаться на него здесь) (см. раздел «УСТАНОВКА» в snipmate README для правильной настройки).

Если вы используете поддерживаемый форк, я считаю, что установка g: snipMate.scope_aliases в вашем .vimrc сдля вашего примера сработает следующее:

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['eruby'] = 'eruby,eruby-rails'

Я добавил запрос на получение для снипмата для обновления их документации.

1 голос
/ 05 марта 2012

Прыжки на подножке UltiSnips после некоторой попытки SnipMate.Как упоминал SirVer, наличие фрагментов html, ruby ​​и т. Д., Доступных в файле *.erb, было так же просто, как добавление строки расширения в файл eruby.snippets.

0 голосов
/ 27 октября 2012

Используя оригинальный плагин 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)
...