Вопрос

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

Мне бы хотелось, чтобы HTML и Ruby или просто HTML было бы в порядке, как бы я это сделал?

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

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

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

Это было полезно?

Решение

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

Если вы посмотрите там, обычно есть один файл на FileType, есть C.Snippets, Ruby.snippets, поэтому кажется, что вам нужно сделать, чтобы создать erb.snippets там с тем, что вы хотите.

В конце концов вы можете скопировать содержание Ruby.snippets и html.snippets в ваш новый erb.snippets.

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

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

Другие советы

Вы можете использовать autocmd Чтобы установить FileType в 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 на Stackoverflow. Ultisnips поддерживает расширение других типов файлов, ваш erb.snippets будет выглядеть так:

extends html, ruby, rails

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

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

Я использовал метод автокоммерда для установки FileType, но затем я получил ошибки HTML Syntax для таких вещей:

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

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

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

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

Вы можете проверить, что FileType для файлов ERB действительно «Eruby» с:

:set filetype?

Если вы используете поддерживается вилка сна, Похоже, вам понадобятся и Eruby.snippets, и Eruby-Rails. Snipmate Readme для правильной настройки).

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

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

Я добавил Получить запрос Чтобы обновить их документацию.

Прыгая на подножку Ultisnips после некоторое время попробовать Snipmate. Как упомянул Сирвер, наличие фрагментов HTML, Ruby и т. Д. *.erb Файл был таким же простым, как добавить линию Extend в eruby.snippets файл.

С оригиналом снек плагин, создайте файл ~/.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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top