Как обновить Vim для цветового кодирования новых HTML-элементов - PullRequest
24 голосов
/ 13 июля 2010

Мне интересно, как я могу настроить vim для окраски новых элементов html5 (например, «canvas» и «video»), как это делается с существующими элементами «script», «body» (или зарезервированными словами в других языках, таких как python "def") и т. д. Текущая версия от MacPorts обычно используется в эмуляторе терминала.

Ответы [ 7 ]

29 голосов
/ 13 июля 2010

html.vim - это файл синтаксиса, который Vim использует для определения того, какие теги будут окрашены. Расположение этого будет зависеть от вашей установки Vim. В этом файле синтаксиса вы увидите много строк, которые выглядят следующим образом:

" new html 4.0 tags
syn keyword htmlTagName contained abbr acronym bdo button col label
syn keyword htmlTagName contained colgroup del fieldset iframe ins legend
syn keyword htmlTagName contained object optgroup q s tbody tfoot thead

Эти строки определяют синтаксические ключевые слова. В этом случае они специально определяют имена тегов HTML. В первой строке Vim указывает на теги abbr, acronym, bdo, button, col и label. Вы можете указать Vim раскрасить дополнительные теги следующим синтаксисом:

" new html 5 tags
syn keyword htmlTagName contained video canvas

Vim теперь будет окрашивать теги video и canvas и любые дополнительные ключевые слова, которые вы добавляете.

Однако, если вы обновите встроенный html.vim, он будет перезаписан при следующем обновлении Vim, поэтому рекомендуется добавлять свои правила к этим встроенным. Для этого создайте путь к папке after/syntax в папке .vim и поместите в нее html.vim.

В этом gist , указанном @ user240515 ниже, содержится большое количество элементов и аргументов HTML 5. Вставьте содержимое этого в ваш недавно созданный html.vim.

Обратитесь к :help html.vim за дополнительной информацией.

22 голосов
/ 15 июля 2010

Спасибо за этот вопрос, и спасибо за принятый ответ!Вот полный список новых тегов, которые нужно добавить для HTML 5, так как они определены на момент написания:

" new html 5 tags
syn keyword htmlTagName contained article aside audio canvas command datalist
syn keyword htmlTagName contained details embed figcaption figure footer header
syn keyword htmlTagName contained hgroup keygen mark meter nav output progress
syn keyword htmlTagName contained rp rt ruby section source summary time video
10 голосов
/ 14 сентября 2010

Я вот-вот попробую:

http://github.com/othree/html5.vim

Кажется довольно полным.

РЕДАКТИРОВАТЬ: Я не вижу ничего о отступах. (

РЕДАКТИРОВАТЬ [23.12.2012]: Да :) Но, может быть, это было добавлено позже: https://github.com/othree/html5.vim/tree/master/indent

7 голосов
/ 26 июля 2010

Просто поместите следующий файл в ~ / .vim / синтаксис:

http://gist.github.com/390929

4 голосов
/ 31 января 2011

Я добавил файл отступа html5 в ответвление othree / html5.vim на основе приведенных выше предложений.

См. http://github.com/briangershon/html5.vim

4 голосов
/ 03 октября 2010

Отступ можно поддерживать, используя подход, аналогичный описанному michaelmichael для расширения файла синтаксиса html.vim.Если у вас еще нет html.vim в ~/.vim/indent, вы можете создать его с найденным содержанием здесь .Внутри ~/.vim/indent/html.vim вы увидите набор вызовов функций, составляющих список имен элементов HTML, который выглядит следующим образом:

" [-- <ELEMENT ? - - ...> --]
call <SID>HtmlIndentPush('a')
call <SID>HtmlIndentPush('abbr')
call <SID>HtmlIndentPush('acronym')
call <SID>HtmlIndentPush('address')
" ...and many more...

Эти строки определяют теги, которые будут вызывать отступ для основного тега.Расширьте этот список любыми тегами HTML5, для которых вы хотите иметь отступ для триггера.В конец этого списка я добавил следующее:

" New HTML 5 elements
call<SID>HtmlIndentPush('table')
call<SID>HtmlIndentPush('article')
call<SID>HtmlIndentPush('aside')
call<SID>HtmlIndentPush('audio')
call<SID>HtmlIndentPush('canvas')
call<SID>HtmlIndentPush('command')
call<SID>HtmlIndentPush('datalist')
call<SID>HtmlIndentPush('details')
call<SID>HtmlIndentPush('embed')
call<SID>HtmlIndentPush('figcaption')
call<SID>HtmlIndentPush('figure')
call<SID>HtmlIndentPush('footer')
call<SID>HtmlIndentPush('header')
call<SID>HtmlIndentPush('hgroup')
call<SID>HtmlIndentPush('keygen')
call<SID>HtmlIndentPush('mark')
call<SID>HtmlIndentPush('meter')
call<SID>HtmlIndentPush('nav')
call<SID>HtmlIndentPush('output')
call<SID>HtmlIndentPush('progress')
call<SID>HtmlIndentPush('rp')
call<SID>HtmlIndentPush('rt')
call<SID>HtmlIndentPush('ruby')
call<SID>HtmlIndentPush('section')
call<SID>HtmlIndentPush('source')
call<SID>HtmlIndentPush('summary')
call<SID>HtmlIndentPush('time')
call<SID>HtmlIndentPush('video')

Отступ теперь будет запускаться для тегов HTML5, перечисленных выше.

0 голосов
/ 15 декабря 2016

Файл syntax/html.vim, поставляемый с vim (8.0), очень устарел. Хороший способ обновления подсветки синтаксиса - использовать хорошо поддерживаемый плагин, такой как vim-polygot , который обновляется намного быстрее. Это html.vim синтаксис поддерживает, canvas, video, section и main (что другие ответы не поддерживают), чтобы назвать несколько.

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