संक्षिप्त में हाइलाइट कैसे काम करता है:
में syntax/<filetype>.vimसिंटैक्स नियमों के साथ परिभाषित कर रहे हैं :syntaxआदेश। यह कमांड परिभाषित करता है, ठीक है, वाक्यविन्यास। यह कहता है "यदि पाठ इस नियमित अभिव्यक्ति से मेल खाता है, तो यह एक स्ट्रिंग है", और इसके आगे। ऐसा करने के लिए, यह एक हाइलाइट समूह प्रदान करता है । यह रंगों के बारे में कुछ नहीं कहता है।
:highlight"इन रंगों के साथ इस समूह को उजागर करें"। यह रंग योजना में किया जाता है , वाक्यविन्यास फ़ाइल में नहीं। डिफ़ॉल्ट हाइलाइट समूहों में से एक गुच्छा रहे हैं ( String, Function, Special, और आगे) सभी रंग योजनाओं परिभाषित करना चाहिए जो।
हालांकि आप इन डिफ़ॉल्ट समूहों तक सीमित नहीं हैं, और आप जितने चाहें उतने समूह बना सकते हैं (लेकिन डिफ़ॉल्ट सिंटैक्स फ़ाइलें आमतौर पर नहीं होती हैं)।
indent/<filetype>.vimफ़ाइल स्वचालित खरोज नियंत्रित करता है। उदाहरण के लिए रूबी यह कहती है " defइंडेंटेशन लेवल बढ़ाने के बाद की लाइन " और "इंडेंटेशन लेवल endकम होने के बाद की लाइन "। यह रंगों या सिंटैक्स हाइलाइटिंग के साथ कुछ भी नहीं करता है।
विभिन्न प्रोग्रामिंग भाषाओं को अलग-अलग हाइलाइट क्यों किया जाता है? व्यक्तिगत सौंदर्यशास्त्र और जो भी इसे लिखा की राय के कारण भाग में। उदाहरण के लिए रूबी में Typeहाइलाइट समूह का उपयोग वर्ग नामों के लिए किया जाता है। लेकिन यह Functionया कुछ और भी हो सकता था । क्यों है Type? शायद इसलिए कि लेखक ने सोचा कि यह उसकी रंग योजना में बेहतर दिख रहा है।
लेकिन इससे भी महत्वपूर्ण बात यह है कि भाषाओं में अलग-अलग शब्दार्थ और संवेदनाएँ हैं। रूबी में, selfएक विशेष कीवर्ड है। आप कर सकते हैं self = "foo"या नहीं def self()। ये त्रुटियां हैं। लेकिन पायथन में ऐसा नहीं है। यह किसी भी विशेष गुणों के बिना सिर्फ एक और चर है। करते हुए:
x = Object()
x.foo()
पायथन द्वारा वास्तव में "अनुवादित" है:
Object.foo(x)
नाम selfसिर्फ सम्मेलन (लगभग सार्वभौमिक रूप से अपनाया गया) है लेकिन आप इसे अपनी पसंद के अनुसार नाम दे सकते हैं; def x(this):या def x(xxx):समान रूप से मान्य हैं। आप selfकहीं भी चाहें नाम का उपयोग कर सकते हैं; self = 'foo'और def self():पूरी तरह से ठीक हैं।
मेरा तर्क है कि selfइसे उजागर नहीं किया जाना चाहिए, क्योंकि यह न तो एक विशेष कीवर्ड है, और न ही पूर्व-परिभाषित चर (जैसे str) है। selfवाक्यविन्यास फ़ाइल में शब्द का कोई निशान नहीं है , इसलिए ऐसा लगता है कि लेखक ने उसी का तर्क दिया है :-)
यदि आप selfहाइलाइट किए गए हैं, तो आपको इसके लिए एक सिंटैक्स नियम बनाना होगा:
:syn keyword pythonBuiltin self
pythonBuiltinसमूह का नाम पहले से ही डिफ़ॉल्ट वाक्य रचना फाइल में परिभाषित और से जुड़ा हुआ है Functionउजागर समूह। नए हाइलाइट समूह का उपयोग करने के लिए, कुछ का उपयोग करें:
:syn keyword pythonSelf self
:highlight def link pythonSelf Special
इन परिवर्तनों को करने के लिए आप अपनी vimrc फ़ाइल में सिर्फ उन्हें चिपका नहीं सकते। वाक्यविन्यास फ़ाइल इसे ओवरराइड करेगी। इसके बजाय आपको सिंटैक्स फ़ाइल लोड के बाद इसे चलाने की आवश्यकता होगी , जिसे आप दो तरीकों से कर सकते हैं:
एक FileTypeस्वतः पूर्णता का उपयोग करें :
augroup python
autocmd!
autocmd FileType python
\ syn keyword pythonSelf self
\ | highlight def link pythonSelf Special
augroup end
का प्रयोग करें after-directory, ~/.vim/after/syntax/python.vim:
syn keyword pythonSelf self
highlight def link pythonSelf Special
दोनों विधियां प्रभावी रूप से समान हैं। जो भी आपको पसंद हो उसका उपयोग करें।