मैं HTML विशेषताओं में वर्तनी की जांच कैसे कर सकता हूं?


9

विम स्पैल चेक फीचर ज्यादातर मामलों में बहुत अच्छा काम करता है - यह अधिकांश भाषाओं में कोड को शाब्दिक और टिप्पणियों से अलग करने के लिए काफी स्मार्ट है। हालाँकि मुझे HTML वर्तनी जांच में समस्या है:

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

उदाहरण के ऊपर केवल गलती के अंदर divप्रकाश डाला गया है (# 3)। सभी प्रासंगिक विशेषताओं की जांच करना बहुत अच्छा होगा - कम से कम titleऔर data-*, आदर्श रूप से - विशेषताओं की कॉन्फ़िगर करने योग्य सूची।

यह विन्यास या VimScript के माध्यम से प्राप्त करने योग्य है? प्लगइन भी करेगा, लेकिन आदर्श रूप से यह विभिन्न HTML-प्रकार की फ़ाइलों के लिए कॉन्फ़िगर किया जाना चाहिए (उदाहरण के लिए, एएसपी .NET एमवीसी cshtmlफाइलें)।

जवाबों:


5

सिंटैक्स आइटम जिसके भीतर विम वर्तनी वर्तनी की गलतियों को उजागर करेगा @Spellऔर @NoSpellसमूहों का उपयोग करके परिभाषित किया गया है । देखें :help spell-syntax(और के बाकी :help spellऔर :help syntaxफ़ाइलें) पूर्ण विवरण के लिए।

अपना वांछित परिणाम प्राप्त करने के लिए त्वरित और गंदे तय करना अपने विम कॉन्फ़िगरेशन निर्देशिका में एक नई फ़ाइल बनाना है: .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 फ़ाइल से कॉपी किया गया था जो विम के मानक सिंटिपल फ़ाइलों में शामिल है। फिर मैंने प्रत्येक सिंटैक्स आइटम के भीतर वर्तनी-जांच को सक्षम करने के लिए @Spellक्लस्टर को containsफ़ील्ड में जोड़ा ।

इसे केवल "शीर्षक" और "डेटा- *" विशेषताओं पर लागू करने के लिए, वस्तुओं के मिलान के लिए उपयोग की जाने वाली नियमित अभिव्यक्ति को ठीक-ठीक ट्यूनिंग की आवश्यकता होती है, और HTML हाइलाइटिंग कार्यों के तरीके का थोड़ा अधिक व्यापक संपादन। यहां एक समाधान है जो "शीर्षक" विशेषताओं के लिए काम करता है:

syn region htmlStringSpell contained start=+title=["']+hs=s+6 end=+["']+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell containedin=htmlTag,ScriptTag
hi def link htmlStringSpell String

एनबी

  1. नियमित अभिव्यक्ति में अब titleविशेषता का नाम और एक ऑफसेट शामिल है ताकि वाक्य रचना के आइटम का यह हिस्सा हाइलाइटिंग में शामिल न हो। (देखें :help syn-pattern-offset)
  2. सिंटैक्स आइटम का अब अपना नाम है, और इसलिए (i) उन containedinसभी सिंटैक्स आइटमों की आवश्यकता है जो htmlStrings उनकी संबंधित 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") में विशेषताओं के लिए है , और दूसरी एकल-उद्धृत स्ट्रिंग्स ( attr='value') के लिए है। आप इनमें से सिर्फ एक को भी ओवरराइड कर सकते हैं, इसलिए आप चुन सकते हैं कि आपके पास वर्तनी जाँच है या नहीं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.