2015-12-07 5 views
5

मैंविम वाक्य रचना हाइलाइटिंग - एक पैटर्न

syn match sqlVariable ":[a-z][a-z0-9_#$]*" 
syn region sqlString start=+'+ end=+'+ contains=sqlVariable 

के रूप में मेरे वाक्य रचना फ़ाइल में sqlVariable और sqlString परिभाषित किया है से विशिष्ट पाठ को बाहर स्ट्रिंग्स आदेश के भीतर बांध को उजागर करने में sqlVariable शामिल कर सकते हैं (प्लस कुछ अन्य के हवाले से रूपों।) में :b1 जैसे गतिशील कोड। (यह ओरेकल बीटीडब्ल्यू के लिए है।)

यह सब अच्छी तरह से काम करता है - कॉलन युक्त दिनांक प्रारूप मास्क के विशिष्ट कष्टप्रद मामले को छोड़कर, उदाहरण के लिए

to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') 

: एमआई और एस एस क्योंकि निश्चित रूप से चर के रूप में हाइलाइट किया जाता है वे मेरे आकार से मिलान।

क्या बनाने का कोई तरीका है: एमआई और: एसएस sqlVariable से उद्धृत स्ट्रिंग के भीतर मेल नहीं खाता है? (मुझे लगता है कि केवल दो मामले ही ऐसा करेंगे।)

+0

आप पैटर्न के अंत में एक लुकहेड जोड़ने का प्रयास कर सकते हैं: '\ (([^ '] |' [^ '] *') * $ \) \ @ =' –

+0

उम्म, मैं समझ सकता हूं कि कैसे मेरी वाक्यविन्यास फ़ाइल में उस उदाहरण का उपयोग करने के लिए ... –

+0

मैंने कोशिश की: 'az] [a-z0-9 _ # $] * \ (\ ([^ "] \ |" [^ "] *" \) * \ $ \) \ @ = 'लेकिन कोई भाग्य नहीं :( –

उत्तर

1

क्या यह मदद करता है?

syn match sqlVariable ":[a-z][a-z0-9_#$]*\ze\(\s\|'$\)" 

यह उन :foo अगर वे या एक ' तो EOL ($) एक सफेद स्थान के द्वारा पीछा कर रहे हैं से मेल खाएगी।

तो, :a1 :b1 and :c1 मिलान किया जाएगा: में

'select * from foo where a= :a1 and b=: b1 and c = :c1' 

लेकिन कोई मुकाबला नहीं:

to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') 

आशा है कि यह मदद करता है।

यदि ऐसा नहीं है, तो आप region परिभाषा के बारे में फिर से सोच सकते हैं।

+0

साफ। मुझे लगता है कि यह करता है। धन्यवाद! –

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