मिश्रित रंग वाक्यविन्यास


12

मैं अक्सर vim का उपयोग करते हुए निट में दस्तावेज़ लिख रहा हूं , जिसका अर्थ है कि मेरे पास आर कोड के साथ मिश्रित कोड मार्क है । मैं R सिंटैक्स पर R सिंटेक्स रंग करना चाहूंगा, लेकिन अन्य सभी टुकड़ों पर मार्कडाउन या कोई रंग नहीं। क्या यह योग्य है? कैसे?


3
मुझे लगता है कि आप vim.wikia.com/wiki/…
nobe4

5
आपके मार्कडाउन प्लगइन के आधार पर, आप पहले से ही शामिल "कोड ब्लॉक" के सिंटैक्स रंग के लिए समर्थन कर सकते हैं या नहीं। पहले मामले में, आपको "कोड" को मान्य कोड ब्लॉक के रूप में पहचानने के लिए (सिर्फ) प्लगइन के सिंटैक्स को बदलना होगा। 2 के मामले में, शायद आप खुद को जूनगुन के vimrc, विशेष रूप से कार्यों s:syntax_includeऔर s:file_type_handler: github.com/junegunn/dotfiles/blob/master/vimrc
VanLaser

5
क्या यह एक मार्कडाउन फाइल है जो कोड ब्लॉक के अंदर आर कोड होने के लिए होती है? यदि ऐसा है तो आप g:markdown_fenced_languagesअपने vimrcउदाहरण में g को R जोड़ना चाहते हैं : markdown_fenced_languages ​​= ['r'] `। मैं मान रहा हूँ कि आप टिम पोप द्वारा प्रदत्त डिफ़ॉल्ट मार्काट सिंटैक्स का उपयोग कर रहे हैं ।
सज्जित

1
विम सिंटैक्स फाइलें हैं, विम में अधिकांश चीजों की तरह, एक फाइल में पूर्व कमांड का सिर्फ एक क्रम है। आप एक, दो, तीन, या जितने चाहें उतने शामिल कर सकते हैं। एक सिंटैक्स फ़ाइल बनाना जो भाषा ए के रूप में कुछ ब्लॉकों को उजागर करता है और भाषा बी के रूप में अन्य ब्लॉक उतना मुश्किल नहीं है (वास्तव में, मैंने बस एक और उत्तर में ऐसा किया था )। हालाँकि, मुझे पूरी तरह से यकीन नहीं है कि "knitr" दस्तावेज़ क्या दिखते हैं? क्या यह सिर्फ मार्कडाउन है? या एक अलग वाक्यविन्यास?
मार्टिन टूरनोइज

जवाबों:


2

जैसा कि पीटर रिनकर ने नोट किया है , विम के मानक मार्कडाउन प्रारूपण में पहले से ही r"फ़ेंस कोड ब्लॉक" के भीतर कोड को हाइलाइट करने के लिए समर्थन शामिल है , और इसे सक्षम करने के लिए, आपको बस अपने कोड में एक वैश्विक चर सेट करना होगा vimrc:

let g:markdown_fenced_languages = ['r']

हालाँकि, ऐसा करने के बाद, आप पाएंगे कि आपके निट कोड ब्लॉक अभी भी हाइलाइट नहीं किए गए हैं।

ऐसा इसलिए है क्योंकि निट आर कोड को अलग करने के लिए पंडोक की सूचना स्ट्रिंग्स के प्रारूपण का उपयोग करता है जो कि एक नियमित कोड ब्लॉक से चलाया जाना है , और विम का नियमित मार्कडाउन हाइलाइटिंग इस 1 का समर्थन नहीं करता है ।

इसे ठीक करने का सबसे आसान तरीका निम्नलिखित प्रकार को जोड़कर कोड ब्लॉक के इस प्रकार से मिलान करने के लिए मैन्युअल रूप से एक अतिरिक्त वाक्यविन्यास आइटम जोड़ना है ~/.vim/after/syntax/markdown.vim

syntax region markdownHighlightr matchgroup=markdownCodeDelimiter start=/^\s*```{r}.*$/ end=/^\s*```\ze\s*$/ keepend contains=@markdownHighlightr

आप पंडोक हाइलाइटिंग के लिए एक विम प्लगइन स्थापित करने पर भी विचार कर सकते हैं, जो संभवतः इस बॉक्स से बाहर का समर्थन करेगा।

1: यह वास्तव में विम के मार्कडाउन सिंटैक्स फ़ाइल में एक समस्या नहीं माना जा सकता है। मूल Markdown वाक्य रचना सब पर कोड ब्लॉक fenced है शामिल नहीं है, और CommonMark कल्पना को परिभाषित नहीं करता कैसे जानकारी तार स्वरूपित किया जाना चाहिए।

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