HTML属性のスペルをチェックするにはどうすればよいですか?


9

ほとんどの場合、Vimのスペルチェック機能は優れています。ほとんどの言語では、コードをリテラルやコメントと区別するのに十分なほどスマートです。ただし、HTMLスペルチェックに問題があります。

  <div title="text with mistaek #1" data-text="text with mistaek #2">text with mistaek #3</div>

上記の例でdivは、内部の間違いのみが強調表示されています(#3)。少なくとも、 -関連するすべての属性が確認され持っている素晴らしいことだtitledata-*理想的には、 -属性の設定可能なリストを。

構成またはVimScriptを介して実現できますか?プラグインも機能しますが、理想的には、さまざまHTMLなファイル(たとえば、ASP .NET MVC cshtmlファイル)に対して構成可能である必要があります。

回答:


5

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属性の構文強調表示を定義し、Vimの標準構文ファイルに含まれているhtml.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

  1. 正規表現にtitle属性の名前とオフセットが含まれるようになり、構文項目のこの部分が強調表示に含まれないようになりました。(を参照:help syn-pattern-offset
  2. 構文アイテムには独自の名前が付いているため、(i)containedinhtmlStringsがそれぞれのcontains設定を介して含まれているすべての構文アイテムである必要があります。(ii)独自の強調表示を適用します。

1
ありがとう!一重引用符の行を追加するように私の回答を更新しました。(完全な修正に取り組んでいます)
リッチ

3

から/usr/share/vim/vim74/syntax/html.vim

syn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
syn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc

スペルサポートを追加するには、次のように@Spellキーワードを追加する必要があります(を参照:help spell-syntax)。

syn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell
syn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell

これを入れて~/.vim/after/syntax/html.vim、デフォルトの構文ルールを上書きする必要があります。

おまけのヒント:
最初の行は二重引用符で囲まれた文字列(attr="value")の属性用で、2行目は単一引用符付きの文字列(attr='value')の場合です。これらの1つだけを上書きすることもできるため、スペルチェックを行うかどうかを選択できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.