Елементи синтаксису, в яких Vim виділяє орфографічні помилки, визначаються за допомогою кластерів @Spellта @NoSpellкластерів. Детальну інформацію див. У :help spell-syntax(та решті файлів :help spellта :help syntaxфайлів).
Швидке та брудне виправлення для отримання бажаного результату полягає у створенні нового файлу у каталозі Vim config: .vim/after/syntax/html.vimіз вмістом:
syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell
syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell
Ці рядки визначають виділення синтаксису для атрибутів HTML і були скопійовані з файлу html.vim, що входить до стандартних файлів синтаксису Vim. Потім я додав @Spellкластер у containsполе, щоб увімкнути перевірку орфографії у кожному елементі синтаксису.
Для того, щоб застосувати це лише до атрибутів "title" та "data- *", потрібна точна настройка регулярного виразу, що використовується для відповідності елементів, та трохи більш масштабне редагування способу роботи підсвічування HTML. Ось рішення, яке працює лише для атрибутів "title":
syn region htmlStringSpell contained start=+title=["']+hs=s+6 end=+["']+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell containedin=htmlTag,ScriptTag
hi def link htmlStringSpell String
NB
- Тепер регулярний вираз включає ім'я
titleатрибута та зміщення, щоб ця частина елемента синтаксису не була включена до виділення. (Див. :help syn-pattern-offset)
- Елемент синтаксису тепер має своє ім'я, а тому повинен (i) бути
containedinвсіма елементами синтаксису, до яких містяться htmlStrings, за допомогою відповідних containsналаштувань. (ii) застосовувати власну підсвітку.