Vim html.erb фрагменты ?? Snipmate нужен кончик VIM
-
09-10-2019 - |
Вопрос
Когда я нахожусь в файле 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)