HTML özelliklerindeki yazımı nasıl kontrol edebilirim?


9

Vim yazım denetimi özelliği çoğu durumda harika çalışır - kodu çoğu dilde hazır bilgi ve yorumlardan ayıracak kadar akıllıdır. Ancak HTML yazım denetimi ile ilgili sorunlar var:

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

Yukarıdaki örnekte sadece içerideki hatalar divvurgulanmıştır (# 3). İlgili tüm özelliklerin - en azından titleve data-*ideal olarak - yapılandırılabilir özellik listesinin kontrol edilmesi harika olur .

Yapılandırma veya VimScript ile gerçekleştirilebilir mi? Eklenti de yapacak, ancak ideal olarak farklı HTMLbenzeri dosyalar için yapılandırılabilir olmalıdır (örneğin, ASP .NET MVC cshtmldosyaları).

Yanıtlar:


5

Vim'in yazım hatalarını vurgulayacağı sözdizimi öğeleri @Spellve @NoSpellkümeleri kullanılarak tanımlanır . Bkz :help spell-syntax(ve geri kalanı :help spellve :help syntaxdosyalar) tüm detaylar için.

İstediğiniz sonucu almak için hızlı ve kirli düzeltme Vim yapılandırma dizininizde yeni bir dosya oluşturmaktır .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

Bu satırlar HTML öznitelikleri için sözdizimi vurgulamasını tanımlar ve Vim'in standart sözdizimi dosyalarında bulunan html.vim dosyasından kopyalanır. Daha sonra her sözdizimi öğesinde yazım denetimini etkinleştirmek için @Spellkümeyi containsalana ekledim .

Bunu yalnızca "başlık" ve "veri- *" özelliklerine uygulamak için, öğeleri eşleştirmek için kullanılan normal ifadenin ince ayarının yapılması ve HTML vurgulamanın çalışma biçiminin biraz daha kapsamlı bir şekilde düzenlenmesi gerekir. Yalnızca "title" özellikleri için çalışan bir çözüm aşağıdadır:

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. Normal ifade artık titleözniteliğin adını ve sözdizimi öğesinin bu bölümünün vurgulamaya dahil edilmemesi için bir uzaklık içerir. (Bkz. :help syn-pattern-offset)
  2. Sözdizimi öğesinin artık kendi adı vardır ve bu nedenle (i) containedinhtmlStrings'in ilgili containsayarları aracılığıyla içerdiği tüm sözdizimi öğeleri olması gerekir . (ii) kendi vurgulamasının uygulanması.

1
Teşekkürler! Tek tırnaklı satırları eklemek için cevabım güncellendi. (Tam düzeltme üzerinde çalışıyor)
Zengin

3

Gönderen /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

Yazım desteği eklemek için, şu şekilde @Spellanahtar kelimeyi (bkz. :help spell-syntax) Eklememiz gerekir:

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

Bunu ~/.vim/after/syntax/html.vim, varsayılan sözdizimi kurallarını geçersiz kılacak şekilde koymanız gerekir .

Bonus ipucu:
İlk satır, çift tırnaklı dizelerdeki ( attr="value") nitelikler, ikinci satır ise tek tırnaklı dizelerdeki ( attr='value') ise. Ayrıca bunlardan sadece birini geçersiz kılabilirsiniz , böylece yazım denetiminiz olup olmadığını seçebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.