कस्टम विम हाइलाइटिंग


12

मैं अभी कुछ xml संपादित कर रहा हूँ और मैं अपने आप को वापस आने के लिए चीजों की कुछ टिप्पणियों को छोड़ रहा हूं। ऐशे ही

<!-- Question: bla bla -->

मैं अभी vim के साथ संपादन कर रहा हूं और मैं चाहूंगा कि अभी से ही प्रश्न को हाइलाइट कर दूं, ताकि मैं आसानी से अपने कोड को देख सकूं और उन सभी जगहों को ढूंढ सकूं, जिन्हें मुझे देखने की जरूरत है। मुझे पता है कि मुझे अपने vimrc में कुछ जोड़ने की आवश्यकता है लेकिन मुझे लगता है कि मैं गलत चीज़ खोज रहा हूँ।

अपडेट करें

मैंने .vimrcइसे अपने अंदर डालने की कोशिश की लेकिन इसका कोई असर नहीं हुआ:

syn keyword JakeAnnotation      Question

hi JakeAnnotation gui=bold term=bold cterm=bold

अपडेट २

वास्तव में मैं देख सकता हूं कि मैंने पहले जो कुछ किया था उसका कुछ प्रभाव पड़ा क्योंकि जब मैं ऐसा करता हूं:

:hi

यह मुझे उन सभी चीजों को दिखाता है जो इसे हाइलाइट कर रही हैं और प्रविष्टियों में से एक है:

JakeAnnotation xxx term=bold cterm=bold ctermbg=6

( और xxx को सही ढंग से स्वरूपित किया गया है )

यह मुझे विश्वास दिलाता है कि मैं प्रश्न को ठीक से परिभाषित नहीं कर रहा हूं। क्या प्रश्न को एक पंक्ति में होना चाहिए?

अपडेट ३

ठीक है तो उपयोगकर्ता 22303 के बाद मैं यह काम कर रहा हूँ:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/

हालाँकि मुझे संदेह है कि आपको प्रति फ़ाइल केवल एक मैच की अनुमति है। क्योंकि जब मैं ऐसा करता हूं:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/
highlight MyRelook cterm=bold term=bold ctermbg=blue ctermfg=black
match MyRelook /Another look/

पहले वाला काम करना बंद कर देता है। (लेकिन दूसरा काम करता है)।

जवाबों:


10

मुझे लगता है कि हम आपको कुछ जवाब दे रहे हैं, जो बिल्कुल सही नहीं हैं। यहाँ कुछ करने की कोशिश है जो मैंने अपनी मशीन पर परीक्षण किया है।

सबसे पहले, अपना नया हाइलाइट समूह बनाएं:

:highlight MyQuestions guifg=red guibg=green

अब, निर्दिष्ट करें कि हाइलाइट समूह तब भी मौजूद होगा जब कोई पैटर्न मिलान होता है:

:syntax match MyQuestions /Question/

उस पाठ पर 'प्रश्न' का प्रकाश दिखाना शुरू करना चाहिए, जिसमें वह पाठ हो। संपूर्ण पंक्ति दिखाने के लिए आप खोज पाठ को पूरी पंक्ति से मेल खाते वाइल्डकार्ड से बदलेंगे, कुछ इस तरह से:

:syntax match MyQuestions /.*Question.*/


वास्तव में उस एकमात्र छंटनी ने काम किया ... मुझे संदेह है कि आपको केवल एक मैच देखने की अनुमति है # 3 अपडेट देखें ...
साठफुटेरसुडे

1
@sixtyfootersdude: क्षमा करें, एक बार फिर से छोटी सी त्रुटि थी। सभी मैच कमांड को इसके बजाय "सिंटैक्स मैच" कमांड होना चाहिए। इसलिए [: मिलान MyQuestions /.*Question.*/] के बजाय आप [: वाक्यविन्यास मिलान MyQuestions /.*Question.*/] का उपयोग करना चाहेंगे। इससे आप जितने चाहें उतने अलग-अलग मैच कर सकते हैं। ये वास्तव में वाक्य रचना फ़ाइलों में रखे गए सबसे सामान्य प्रकारों में से एक हैं। लेकिन आप कमांड लाइन, vimrc, या किसी भी अन्य लिपियों में से कहीं भी अपनी इच्छानुसार उन्हें निष्पादित कर सकते हैं।
user22303

जोड़ने syntaxके सामने match...मेरी vimrc फ़ाइल बनाता है सभी पर कोई प्रभाव नहीं मेल खाते हैं। क्या यह वह जगह है जहाँ मुझे यह करना चाहिए। खुली फाइल में करने से भी कोई प्रभाव नहीं पड़ता है।
साठफुटेरसूड

1
@sixtyfooters: यकीन नहीं है कि आपके लिए क्या हो रहा है, लेकिन यह निश्चित रूप से ऐसा करने का तरीका है। किसी स्क्रिप्ट में रखने से पहले कमांड लाइन पर टेस्ट करें (यह संभव है कि सिंटैक्स सेटिंग्स अन्य स्क्रिप्ट में आपकी फ़ाइल के लिए लोड की गई कहीं न कहीं साफ़ हो रही हैं)। एक बार परिभाषित करने के बाद, जांचें कि कौन से समूह मौजूद हैं और नंगे जारी करके उनके पास क्या हाइलाइटिंग है: हाइलाइट "कमांड (या" सिंटैक्स ", जीवी में गिनी मेनू से" हाइलाइट टेस्ट ")। याद रखें कि आप समूह बनाने के लिए पहले हाइलाइट कमांड का उपयोग करना चाहते हैं, फिर मैच पैटर्न सेट करने के लिए 'सिंटैक्स मैच' का उपयोग करें।
user22303

@sixtyfooters: मैं मान रहा हूँ कि आप एक टर्मिनल में विम (यानी, gvim नहीं) चल रहे हैं ताकि केवल गुण सेट करने के लिए काम करना चाहिए। ऐसा लगता है कि जब कोई नई फ़ाइल लोड की गई है और एक संबंधित सिंटैक्स फ़ाइल चल रही है और पिछले सभी सिंटैक्स आदेशों को साफ़ कर रही है, तो सिंटैक्स कमांड्स क्लियर हो रहे हैं। तो बस डबल-चेक करने के लिए, कमांड लाइन का उपयोग करते समय क्या आप किसी फ़ाइल को लोड करने पर हर बार इन आदेशों को फिर से दर्ज कर रहे हैं? मुझे लगता है कि आप नए बफर में पाठ के साथ परीक्षण करने की कोशिश कर सकते हैं जो अभी भी नहीं बचा है और अभी तक एक फ़ाइल नाम भी नहीं दिया गया है।
user22303

5

आप जिस फ़ाइल की तलाश कर रहे हैं वह एक 'सिंटैक्स' फ़ाइल है। में देखने का प्रयास करें /usr/local/share/vim/syntax/या /usr/share/vim/syntax/। आपको जो फ़ाइल चाहिए वो है xml.vim।

सबसे सरल बात यह है कि जो लाइन है उसे ढूंढें

syn keyword xmlTodo         contained TODO FIXME XXX

और इसे बदल दें:

syn keyword xmlTodo         contained TODO FIXME XXX Question

यह पाठ युक्त किसी भी टिप्पणी पर 'टोडो' हाइलाइट जोड़ देगा Question

यदि आप इसके लिए (कभी भी) उपयोग करने जा रहे हैं, ~/.vim/syntaxतो अपने स्थानीय में xml.vim को कॉपी करना सबसे अच्छा होगा ताकि आपके कस्टम सिंटैक्स फ़ाइल को विम करने के लिए परिवर्तन अधिलेखित न हों।

अपडेट करें

यदि आप किसी फ़ाइल में समान (सॉर्टोफ़) क्षमता चाहते हैं, तो मैं 'गोटो' कमांड का उपयोग करूंगा। मैं मानता हूँ कि यह hlsearch की तरह है, जो आपने कहा था कि आपको गुस्सा दिलाता है।

संपादन करते समय, जब कर्सर किसी शब्द पर होता है, gdतो फ़ाइल में वर्तमान बिंदु से खोज करने के लिए टाइप करें या gDशुरुआत से खोजें। आपकी फ़ाइल का प्रत्येक शब्द जो वर्तमान शब्द से मेल खाता है, हाइलाइट किया गया है। आप nउस शब्द के अगले उदाहरण पर जा सकते हैं ।

मैं ऐसा करने के लिए तैयार हूं, क्योंकि आपको कम से कम टाइपिंग के साथ हाइलाइट और नेविगेशन मिलता है। आप सामान्य तरीके से हाइलाइट बंद करते हैं::noh[lsearch]


वाह! वह आवाज जैसे मैं क्या करना चाहता हूं। वर्तमान में मेरे पास कोई ~/.vim/ folder. If I created it and create the file सिंटैक्स नहीं है `क्या मुझे इसका .vimrc?उपयोग करने के लिए विम (कहीं ) का संदर्भ देने की आवश्यकता है?
साठफुटेरसूड

1
नहीं। विम स्वचालित रूप से इसके लिए दिखता है (और कुछ अन्य निर्देशिकाएं - उदाहरण के लिए: प्लगइन्स, रंग, कंपाइलर) और यदि आपके घर क्षेत्र में एक सिंटैक्स फ़ाइल मौजूद है, तो यह सिस्टम डिफ़ॉल्ट की पूर्वता लेता है।
डेवपैरिलो

1
इसके अलावा, बस स्पष्ट होने के लिए, आप एक निर्देशिका बनाना चाहते हैं syntaxऔर उसमें एक फ़ाइल xml.vim
डालते हैं

क्या मुझे अपना .vimrc अपने .vim dir में डालना चाहिए?
साठफुटेरसुडे

1
वाक्यविन्यास फ़ाइलें आपके .vim dir में जाती हैं। सिंटेक्स हाइलाइट का उद्देश्य भाषा विशिष्ट होना है। यदि आप किसी फ़ाइल में समान (सॉर्टोफ़) क्षमता चाहते हैं, तो मैं 'गोटो' कमांड का उपयोग करूंगा। मैं इसे अपने उत्तर में जोड़ूंगा।
डेवपैरिलो

2

आप बस कर सकते हैं

:set hlsearch

और फिर प्रश्न की खोज करें


यही तो मैं कर रहा हूं लेकिन hlsearch मुझे परेशान करता है। +1, सुझाव के लिए धन्यवाद।
साठफुटेरसूड

2

आपके पास कई विकल्प हैं।
- एक, जैसा कि डोमिनिक ने उल्लेख किया है ... आप एक-एक करके उन लोगों को खोज सकते हैं (व्यावहारिक नहीं)
- दो, आप उन सभी की "सूची" पाने के लिए ": जी / <- प्रश्न" कर सकते हैं (थोड़ा बेहतर) , एक समग्र चित्र देता है)
- तीन, आप एक हाइलाइटिंग समूह सेट कर सकते हैं यदि आप केवल xml फ़ाइलों में उन प्रकार की टिप्पणियों का उपयोग कर रहे हैं (मुझे नहीं पता कि xml कैसा दिखता है, इसलिए मुझे नहीं पता कि क्या कुछ हैं उन पर अन्य प्रकार की टिप्पणियाँ)। यह अच्छा होगा यदि आप इसे vimrc में सेट अप करते हैं, क्योंकि जब आप नए संस्करण के साथ vim ताज़ा करते हैं, तो आपकी xlm.vim फ़ाइल चली जाएगी।


+1 मुझे :g/सुझाव पसंद है , लेकिन अगर 'प्रश्न' टिप्पणी टैग का तुरंत पालन नहीं करता है, तो आवेदन करना कठिन हो सकता है।
डेवपैरिलो

@DaveParillo - आह, हाँ। ठीक है, जैसा कि मैंने कहा, मैं xml के बारे में कुछ भी नहीं जानता, इसलिए मैंने मान लिया कि यह हमेशा से ऐसा था।
रुके

मैं एक हाइलाइटिंग समूह कैसे सेट कर सकता हूं?
साठफुटेरसुडे

1
@sixtyfootersdude - देखें ": मदद e410"।
रूक

@ इडीगास: संदर्भ के लिए धन्यवाद। एक नज़र था, लेकिन फिर भी मेरी समस्या को हल नहीं कर सका। मैंने प्रश्न में एक अद्यतन जोड़ा। धन्यवाद।
साठफुटेरसूड

1

जरूरी नहीं कि आप अपने vimrc में कमांड डालें। आप हमेशा इसे केवल कमांड लाइन पर दर्ज कर सकते हैं और फिर इसे तब साफ़ कर सकते हैं जब आप हाइलाइटिंग नहीं चाहते हैं। कमांड कुछ इस तरह से होंगे:

: हाय प्रश्न गुइफ = लाल गुबग = नीला गुई = बोल्ड

जीवीएम (यानी, एक gui के साथ vim) जो अग्रभूमि (guifg), पृष्ठभूमि और सामान्य चरित्र सेटिंग्स सेट करेगा।

यदि आप चाहते हैं कि हिगलाइटिंग से छुटकारा पाना है:

: हाय प्रश्न स्पष्ट

टर्मिनल के अंदर विम का उपयोग करके आप इस कमांड का उपयोग करने के लिए संशोधित कर सकते हैं:

: हाय प्रश्न ctermfg = लाल ctermbg = नीला शब्द = बोल्ड

आप निश्चित रूप से उनमें से किसी को भी अपने vimrc में रख सकते हैं, और आप gu और शब्द के झंडे को एक ही कमांड में जोड़ सकते हैं।


[नीचे मैंने एक और पोस्टर के उत्तर को पढ़ने के बाद जोड़ा]

क्षमा करें, मैं यह मान रहा था कि आपकी प्रश्न लाइनों के वाक्य-विन्यास ने पहले ही विम के अंतर्निहित 'प्रश्न' हाइलाइट टैग के लिए आपकी सिंटैक्स फ़ाइल की सेटिंग्स से मिलान कर लिया है। बस दूसरे उत्तर को देखें जिसमें vim के लिए xml सिंटैक्स फ़ाइल का उल्लेख है और फिर आप प्रश्न के बजाय ToDo हाइलाइट समूह का उपयोग करके ऊपर आदेश जारी कर सकते हैं।


कोशिश की: हाय प्रश्न ctermfg = लाल ctermbg = नीला शब्द = बोल्ड लेकिन कोई प्रभाव नहीं था।
साठफुटेरसुडे

क्षमा करें, हाय कमांड ने केवल यह स्थापित किया कि प्रश्न समूह को कैसे हाइलाइट किया जाएगा। अब आपको यह निर्दिष्ट करना होगा कि दस्तावेज़ के कौन से क्षेत्र प्रश्न समूह का हिस्सा हैं। आप एक मैच कमांड के साथ ऐसा कर सकते हैं: मैच प्रश्न / [खोज पैटर्न] / या, अपने मामले में: मैच मैच प्रश्न / प्रश्न /
user22303

0

मुझे पार्टी के लिए देर हो रही है लेकिन मैं इस स्थिति के लिए उपयोग करता हूं TODOऔर FIXMEवास्तव में।

सबसे अधिक, यदि सभी नहीं, तो कलरकेम TODOपृष्ठभूमि रंग, अंडरलाइन और इटैलिक के कुछ संयोजन के साथ निम्नलिखित उदाहरण में उजागर करेगा :

<tree>
  <!--TODO : do I have to add a trunk tag ?-->
  <branch>
    <leaf>caterpillar</leaf>
    <leaf>caterpillar</leaf>
  </branch>
</tree>

यह वास्तव में शब्दार्थ में फिट नहीं है, लेकिन यह विशुद्ध रूप से कार्यात्मक दृष्टिकोण से बहुत अच्छा काम करता है।

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