vim

2014-12-29 13 views
5

पर उच्च हाइलाइट प्राथमिकता पर आइटम सेट करें, मैं here पर चर्चा के रूप में दिखाने के लिए गैर असीसी वर्णों को देखना चाहता हूं, लेकिन गैर असीसी चरित्र टिप्पणी के अंदर होने पर वाक्यविन्यास हाइलाइट गायब हो जाता है। थोड़ी सी समस्या की जांच करना, मैंने विम-मैनुअल में खोज की है कि एक आइटम जो पहले शुरू होता है, में उच्च प्राथमिकता (तीसरी वस्तु) होती है। help :syn-priority से:vim

जब कई वाक्य रचना आइटम से मेल कर सकते हैं, इन नियमों उपयोग किया जाता है:

  1. कई मैच या क्षेत्र आइटम एक ही स्थिति में प्रारंभ करते हैं, आइटम पिछले परिभाषित प्राथमिकता है।

  2. एक कीवर्ड को मैच और क्षेत्र वस्तुओं पर प्राथमिकता है।

  3. एक आइटम जो पहले की स्थिति में शुरू होता है, बाद में स्थितियों में शुरू होने वाली वस्तुओं पर प्राथमिकता रखता है।

मैं वर्तमान में इस का उपयोग कर रहा:

syntax match nonascii "[^\x00-\x7F]" nextgroup=Comment 

और contains विकल्प::

syntax match nonascii "[^\x00-\x7F]" 
highlight nonascii cterm=underline ctermfg=red ctermbg=none term=underline 

मैं विकल्पों nextgroup का उपयोग कर nonascii मैच आइटम के लिए उच्च प्राथमिकता देने के लिए करने की कोशिश की

syntax match nonascii "[^\x00-\x7F]" contains=ALL 

लेकिन यह काम नहीं किया। मैंने वांछित प्रभाव के बिना टिप्पणियों को अस्थायी रूप से अक्षम करने की कोशिश की (highlight clear Comment) (मेरी टिप्पणियों को बिना हाइलाइट के मिला, लेकिन nonascii unhighlighted जारी रखा)। मुझे क्या याद आ रहा है

उत्तर

5

हां, आपका कस्टम वाक्यविन्यास समूह मेल नहीं खाता है क्योंकि टिप्पणियों के लिए पहले से ही एक मिलान है (या मौजूदा वाक्यविन्यास स्क्रिप्ट से अन्य वाक्यविन्यास तत्व)।

समाधान विम को बताना है कि आपका nonascii समूह उन समूहों को containedin है, ताकि विम वहां से मिलान करने का प्रयास करेगा (न केवल बेकार शीर्ष स्तर पर)। यह जटिलता यह है कि टिप्पणियों के लिए वाक्यविन्यास समूह वाक्यविन्यास स्क्रिप्ट पर निर्भर करता है और इसलिए फ़ाइल प्रकार पर (नामकरण काफी नियमित है)। निम्न उदाहरण में, मैं सी और Vimscript फ़ाइलों के लिए नामों का उपयोग किया है:

:syntax match nonascii "[^\x00-\x7F]" containedin=cComment,vimLineComment 
1

किसी ने पहले ही सवाल का जवाब दे दिया है। हालांकि, जिन लोगों के पास अभी भी समस्याएं हैं, उनके लिए टिप्पणियों में गैर-असीसी पात्रों (या मामले में किसी भी समूह) को हाइलाइट करने का एक और समाधान है। यह सबसे अच्छा नहीं है, लेकिन यह एक अस्थायी तय है।

एक कोशिश कर सकते हैं:

:syntax match nonascii "[^\u0000-\u007F]" containedin=ALL contained | 
      \ highlight nonascii ctermfg=yellow guifg=yellow 

यह बहुत मूल कार्यान्वयन और अन्य समाधान के करीब है। आप contained को भी हटा सकते हैं, लेकिन, दस्तावेज़ीकरण से, खुद को रिकर्स करने की संभावित समस्या हो सकती है (जैसा कि मैं समझता हूं)। अन्य परिभाषित पैटर्न देखने के लिए, syn-contains अनुभाग में यह शामिल होगा।

:help syn-containedin 
:help syn-contains 
संबंधित मुद्दे