कस्टम हाइलाइटिंग नियम कहां हैं?


11

कभी-कभी मैं अपनी प्राथमिकताओं के साथ रंग और शैलियों को उजागर करने वाले डिफ़ॉल्ट सिंटैक्स को ओवरराइड करना चाहता हूं।

मुझे लगता है कि ऐसा करने के लिए सबसे उपयुक्त तरीका यह है कि मैं अपना खुद का कलकेम बनाऊं। हालांकि मेरे पास कुछ सवाल हैं।

  1. यदि मैं किसी विशिष्ट भाषा में एक विशिष्ट वाक्यविन्यास समूह के लिए एक हाइलाइट सेट करना चाहता हूं, तो क्या यह मेरे कोलकेम में है, या इसे इसमें रखना बेहतर होगा after/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    यह रंग-भाषा में अस्पष्ट भाषा-विशिष्ट नियमों को रखने के लिए थोड़ा अजीब लगता है, क्योंकि वे जिस भी भाषा में काम कर रहे हैं, मुझे लोड हो जाएगा, लेकिन वाक्यविन्यास फ़ाइल में हाइलाइट नियमों को रखना और भी बदतर लगता है।

  2. कभी कभी मैं एक विशिष्ट भाषा के लिए नए वाक्य रचना नियम बनाने, में after/syntax/[filetype].vim। यदि अन्य उपयोगकर्ता इन एक्सटेंशनों को नियोजित करना चाहते हैं, तो क्या मेरे लिए वहां डिफ़ॉल्ट हाइलाइट नियम प्रदान करना उचित होगा, जो सामान्य डिफ़ॉल्ट हाइलाइट समूहों से लिंक हो? यदि कोई अन्य उपयोगकर्ता उस हाइलाइट रंग को ओवरराइड करना चाहता है, तो उन्हें कैसे करना चाहिए?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    

जवाबों:


9

पहला प्रश्न

हाइलाइट परिभाषाएँ आपके colorcheme से संबंधित हैं। तथ्य यह है कि वे हर बफर के लिए भरी हुई हैं, कोई फर्क नहीं पड़ता कि उनकी भाषा क्या है, बिल्कुल भी समस्या नहीं होनी चाहिए।

यदि आप अपना कलरकेम संपादित नहीं करना चाहते हैं, तो आप उन हाइलाइट परिभाषाओं को इसमें डाल सकते हैं plugin/myhighlights.vim:

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

दूसरा सवाल

आपका नमूना वास्तव में है कि आपको क्या करना चाहिए और प्रत्येक वाक्य रचना स्क्रिप्ट कैसे करता है। यह विधि प्लग-इन डेवलपर को उनके उपयोगकर्ता के गले के नीचे विशिष्ट रंगों को मजबूर किए बिना डिफ़ॉल्ट रूप से परिभाषित करने देती है।


पुष्टि के लिए धन्यवाद। लेकिन मैं चिंतित हूँ अगर मैं highlight link ...एक वाक्यविन्यास फ़ाइल में कमांड डालता हूं कि ये हर बार उस फ़ाइल फ़ाइल के लोड होने के बाद कलर्सकेम से सेटिंग्स को ओवरराइट कर देगा। मैं शायद चाहिए केवल कर highlight link ...जाँच है कि कोई प्रकाश डाला नियम यह है कि नाम के लिए मौजूद है के बाद?
joeytwiddle

आह, मुझे चिंता करने की जरूरत नहीं है। विम डॉक्स कहते हैं: यदि पहले से ही {from-group} के लिए हाइलाइट सेटिंग हैं, तो लिंक तब तक नहीं बनाया जाता, जब तक कि '!' दिया हुआ है। एक sourced फ़ाइल में ": हाइलाइट लिंक" कमांड के लिए, आपको एक त्रुटि संदेश नहीं मिलता है। इसका उपयोग उन समूहों के लिंक को छोड़ने के लिए किया जा सकता है जिनके पास पहले से ही सेटिंग है।
joeytwiddle

लेकिन लोगों के लिए अपने colorchemes tweaking, highlight linkमें colorcheme highlight linkएक वाक्यविन्यास फ़ाइल में एक द्वारा बाद में अधिलेखित किया जा सकता है । इससे बचने के लिए, लिंक के बजाय वास्तविक तर्क (ctermbg, guifg, ...) का उपयोग किया जा सकता है।
joeytwiddle

उपयोगकर्ता के पास अंतिम शब्द होना चाहिए कि किसी दिए गए हाइलाइट समूह के लिए कौन से रंगों का उपयोग किया जाता है। उस प्रभाव के लिए, यह रंग-भाषा में भाषा-विशिष्ट हाइलाइट परिभाषाओं को देखने के लिए असामान्य नहीं है। आपको केवल highlight link ...अपने सिंटैक्स स्क्रिप्ट में उपयोग करना चाहिए और यदि वे चाहें तो अपने उपयोगकर्ताओं को इसे ओवरराइड करने दें।
रोमेनैल

मेरी चिंता यह थी कि यदि उपयोगकर्ता highlight link ...अपने कलरकेम में उपयोग करते हैं, तो सिंटैक्स फ़ाइल इसे बाद में अपने साथ रीसेट कर सकती है highlight link ...। अब मैं देख रहा हूँ कि अच्छी वाक्यविन्यास फाइलें इसके इस्तेमाल से बचती हैं highlight default link ...asmHexNumberमेरे प्रश्न में यह नियम के लिए एक सुधार होना चाहिए ।
joeytwiddle
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.