एक साधारण विम सिंटैक्स हाइलाइटिंग बनाना


25

मैं एक डेटाबेस फ़ाइल का एक सरल प्रकार है जो केवल निम्न प्रारूप में प्रविष्टियों के होते हैं

चर = मान

मैं इसके लिए एक साधारण विम सिंटैक्स हाइलाइटिंग बनाना चाहता हूं और इसे विशिष्ट फ़ाइल एक्सटेंशन के लिए सेट करना चाहता हूं

उदाहरण के लिए, चर भाग हल्का नीला और मूल्य भाग हल्का लाल हो सकता है

मैं इसे googled और इस तरह के रूप बातों में आए $vimruntime\syntax\, syntax set=, syntax match, और hiकीवर्ड है, लेकिन यह अपने आप को अंत में सेट अप नहीं कर सकता

इसलिए मैं एक बहुत ही सरल vim कोड स्निपेट चाहता हूं जो इसे बाएं और दाएं हाथ के किनारों से मेल करके और उन्हें अलग-अलग रंग करके महसूस करेगा

जवाबों:


31

आपकी फ़ाइल का एक्सटेंशन मान लिया गया है *.foo...

  1. यदि मौजूद नहीं हैं, तो इन फ़ाइलों और निर्देशिकाओं को बनाएँ:

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. निम्नलिखित डालें $HOME/.vim/ftdetect/foo.vim:

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. निम्नलिखित डालें $HOME/.vim/syntax/foo.vim:

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. निम्न पंक्तियों को $HOME/.vimrc(या किसी भी पंक्ति के बाद कम से कम colorscheme) के अंत में रखें :

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. सुनिश्चित करें कि आपके पास निम्नलिखित पंक्ति कहीं है ~/.vimrc:

    syntax on
    

वाह, ओपी को एक की कीमत के लिए लगभग दो समान समाधान मिले! मुझे पसंद है कि हमारे दोनों समाधान बहुत समान हैं, फिर भी विवरण में अलग हैं।
इंगो करकट

यह काम करता है, लेकिन फिर से मुझे मैन्युअल रूप से ftype=हर बार टाइप करना होगा, इसमें कोई fdetectनिर्देशिका नहीं थी $vimrnutime(मैं विंडोज़ पर हूँ %programfiles(x86)%\vim\vim74\ ), मैंने इसे बनाया था, लेकिन फिर भी यह प्रतिक्रिया नहीं करता है

आप syntax onअपने vimrc में जरूरत है।
रोमेनिल

20

सिंटेक्स स्क्रिप्ट

~/.vim/syntax/simple.vimनिम्नलिखित सामग्री के साथ एक फ़ाइल बनाएँ :

" Quit when a syntax file was already loaded.
if exists('b:current_syntax') | finish|  endif

syntax match simpleVar "\k\+" nextgroup=simpleAssignment
syntax match simpleAssignment "=" contained nextgroup=simpleValue
syntax match simpleValue ".*" contained

hi def link simpleVar Identifier
hi def link simpleAssignment Statement
hi def link simpleValue String

let b:current_syntax = 'simple'

यह तीन सिंटैक्स तत्वों से मेल खाता है, और डिफ़ॉल्ट रंग प्रदान करता है। एक आम तौर पर स्पष्ट रंगों को परिभाषित नहीं करता है, लेकिन इसके बजाय डिफ़ॉल्ट हाइलाइटिंग समूहों को आपके कोलकेम द्वारा परिभाषित किया जाता है। आप सभी के द्वारा सूचीबद्ध कर सकते हैं :hi। ट्विकिंग के लिए, पढ़ें :help :syntaxऔर :help usr_44.txt, सिंटैक्स स्क्रिप्ट पर एक नज़र डालें जो विम के साथ जहाज करती है।

छानबीन का पता लगाने

अब तक, आपको मैन्युअल रूप :set syntax=simpleसे सक्रिय होना होगा। स्वचालित रूप से ऐसा करने के लिए, आपको विम को अपने नए फ़िलाटाइप के बारे में सिखाना होगा ।

~/.vim/ftdetect/simple.vimनिम्नलिखित सामग्री के साथ एक फ़ाइल बनाएँ :

autocmd BufNewFile,BufRead *.simple setf simple

यह मानता है कि फ़ाइलों को फ़ाइल नाम (cp। :help autocmd-patterns) के माध्यम से पहचाना जा सकता है । आप पथ (फ़ाइल स्थान), या यहां तक ​​कि सामग्री के आधार पर भी पता लगा सकते हैं। :help new-filetypeविवरण है।

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