2011-08-11 11 views
8

मैं विम (जीयूआई संस्करण) में सिंटैक्स हाइलाइटिंग को कस्टमाइज़ करना चाहता हूं। मेरी भाषा के लिए एक मौजूदा वाक्यविन्यास फ़ाइल है। यदि वह पंक्ति > से शुरू होती है तो मैं प्रत्येक पंक्ति में पृष्ठभूमि रंग को हाइलाइट करने वाले उस वाक्यविन्यास में जोड़ना चाहता हूं। मैं पता लगा है कि मैं मूल रूप से द्वाराविम कस्टम सिंटैक्स केवल हाइलाइटिंग पृष्ठभूमि

:syntax match Output /^>.*$/ 

इस लक्ष्य को हासिल करने के लिए और colourscheme

:hi Output guibg=LightBlue 

जोड़ने कर सकते हैं। इन Output लाइनों में पाठ की पृष्ठभूमि हल्के नीले रंग में रंगीन हो जाती है, लेकिन यह अग्रभूमि रंग को भी ओवरराइड करता है। तो अधिकांश वाक्यविन्यास हाइलाइटिंग गायब हो जाती है। मैं इन लाइनों में अग्रभूमि वाक्यविन्यास को हाइलाइटिंग कैसे रख सकता हूं?

इसके अलावा: क्या इन लाइनों के अंत में पृष्ठभूमि के अंत (स्क्रीन के दाएं छोर) को हाइलाइट करने का कोई तरीका है?

+1

यह एक अच्छा सवाल है। मुझे डर है कि जवाब शायद दोनों के लिए नहीं है लेकिन उम्मीद है कि कोई मुझे गलत साबित करेगा। – Owen

उत्तर

0

इस प्रयास करें:

:hi Output guibg=LightBlue guifg=NONE 
+0

मैं vim.gtk -g में मिलता हूं: "E254: कन्न मर फर्बे कोई भी निचट ज़ुवेइसेन"। अंग्रेजी में अनुवाद: कोई भी रंग असाइन नहीं कर सकता। – rembremading

+0

सभी कैप्स में होने की आवश्यकता है। सही किया। – bhinesley

+0

धन्यवाद, मैंने अभी खुद को पाया है कि आदेश किसी के साथ शिकायत नहीं करता है, लेकिन मुझे अभी भी ऊपर वर्णित परिणाम मिलता है। ध्यान दें कि मैंने colourscheme फ़ाइल की शुरुआत में हाइलाइट कमांड डाला है और संपादक में सिंटैक्स कमांड दर्ज किया है। यह आदेश पर निर्भर हो सकता है? – rembremading

3

यहाँ है कैसे वाक्य रचना को बचाने के लिये, मैं लाइनों {

:hi Output guibg=LightBlue 
:match Output '\%>0v{.*' 

enter image description here

संपादित के साथ शुरू मिलान कर रहा हूँ: के बाद से आप चाहते हैं इसके विपरीत आपको

की आवश्यकता है
:match Output '^[^<].*$' 

enter image description here

+0

काम करता है (विपरीत क्रम में)। क्या पहली पंक्ति नियमित अभिव्यक्ति से अधिक है, जैसे मेरा? कोई विचार है कि पूरी लाइन को हाइलाइट करना सिंटैक्स हाइलाइटिंग के साथ महसूस किया जा सकता है? – rembremading

+0

मैं चारों ओर देख रहा हूं, लेकिन नहीं मिल रहा। Regexes के साथ हम '^। * $' से मेल खाते हैं, इसलिए '\ r' char तक, और विंडो आकार तक नहीं, तब तक हाइलाइट करना समझ में आता है। शायद ': ve ve = all' से संबंधित कुछ है लेकिन सुनिश्चित नहीं है। –

+0

regex मैं '0% वर्चुअल कॉलम शून्य के बाद ''%' सब कुछ '>' मैचों का उपयोग कर रहा हूं, फिर '{।* {से शुरू सामग्री से मिलान करने के लिए। –

0

प्राप्त करने के लिए आप जो खोज रहे हैं सबसे आसान तरीका है के रूप में एरिक फोर्टिस ने कहा है :match कमांड के साथ है।

सिंटैक्स हाइलाइटिंग के साथ इसे प्राप्त करने का एकमात्र तरीका आपको पूरी लाइन से मिलान करने की आवश्यकता होगी जैसा कि आप वर्तमान में कर रहे हैं। आपको contains=... संशोधक का उपयोग करके निर्दिष्ट करने की आवश्यकता होगी, जो वाक्यविन्यास तत्व आपकी रेखा में हो सकते हैं। मुझे भी यकीन है कि इन तत्वों को contained उन्हें असाइन की गई विशेषता होगी। इस प्रकार .* से मेल खाने वाली आपकी लाइन में कोई तत्व पाया गया है, यह इसकी हाइलाइटिंग को संरक्षित रखेगा।

अधिक के लिए :help :syn-contains देखें।

संबंधित मुद्दे