जवाबों:
एकीकृत उत्तर:
मैं listchars का उपयोग करने की कोशिश करेंगे:
:set listchars=tab:\|\
:set list
नोट: \
ऊपर अंतिम के बाद एक जगह है।
यह तरीका अच्छा है क्योंकि यह इस तरह की चीज़ को दिखाने के लिए विम के बिल्ट-इन सपोर्ट का इस्तेमाल करता है।
उदाहरण आउटपुट:
| if (1) {
| | func();
| }
हालांकि, यह प्रमुख स्थानों के लिए काम नहीं करता है। जैसा कि @ जोश पेट्री द्वारा बताया गया है, रिक्त स्थान के लिए काम करने के लिए एक पैच है , लेकिन फिर आपको विम को फिर से जोड़ना होगा, जो इस उत्तर के दायरे से परे है।
वैभव सागर प्लग इन इंडेंटलाइन बताते हैं कि यह कार्यक्षमता है।
सामान्य तरीके से स्थापित करें ( प्लगइन्स स्थापित करना देखें ) और ऐसा लगता है कि जादुई रूप से बस आगे इनपुट के बिना काम करना है। यदि आपको ASCII सलाखों से ऐतराज नहीं है, तो आपको अपने फोंट के साथ कुछ भी करने की आवश्यकता नहीं है। अपने इंडेंटेशन सेटिंग को सेट करने और चलाने के बाद अपने उदाहरण का उदाहरण आउटपुट:IndentLinesReset
45 ¦ var move = function(direction) {
46 ¦ ¦ if(!initialized) { initialize(); }
47
48 ¦ ¦ if(shiftBoard(direction)) {
49 ¦ ¦ ¦ setTimeout(addRandomPiece, 100);
50 ¦ ¦ }
51 ¦ };
प्लगइन को Vim 7.3 या बाद के संस्करण की आवश्यकता होती है, और उस संस्करण के Conceal सुविधा का क्लीवर उपयोग करता है। वास्तव में पाठ को छिपाने के बजाय, यह दृश्य में सलाखों के साथ पाठ की जगह लेता है, लेकिन वास्तविक बफर नहीं। परिणाम आप बार देख रहे हैं, लेकिन वे फ़ाइल में सहेजे नहीं जाते हैं (क्योंकि वे वास्तव में रिक्त स्थान हैं)
ये दोनों विधियां "ठीक से" इंडेंट कोड मानती हैं। वे इंडेंटेशन लाइनों को इंडेंट के स्तर पर नहीं रखते हैं जब एक "ब्लॉक" खोला जाता है (जो उदात्त करने के लिए प्रकट होता है), लेकिन इसके बजाय आपकी इंडेंटेशन सेटिंग्स के आधार पर नियमित अंतराल पर लाइनों को रखता है। इसके अतिरिक्त, यह केवल उन लाइनों पर सलाखों को दिखाता है जहां वास्तव में स्थान है (यही वजह है कि पहले के तहत vim आउटपुट में लाइन में if
कोई बार नहीं है, एक दृश्य अंतर बना रहा है)
एक अन्य विकल्प जो मैं उपयोग करता हूं, जो आपके द्वारा पूछे गए बिलकुल नहीं है, लेकिन यह उसी उद्देश्य को पूरा करने में आसान बनाता है जो यह देखना है कि एक ही कॉलम में क्या है, निम्न को अपने में सेट करना है vimrc
:
set cursorcolumn
set cursorline
इसका व्यापार बंद है जिसे आपको अपने कर्सर को उस स्तंभ पर ले जाना होगा जिसे आप देखना चाहते हैं, लेकिन आपको दृश्य अव्यवस्था कम मिलती है। आमतौर पर जब मैं इंडेंटेशन के स्तर की परवाह करता हूं, तो मैं वैसे भी कर्सर के साथ अपनी जगह बनाए रखता हूं। मेरा रास्ता भी अजीब नहीं है, ब्रेसिज़ को बंद किए बिना अजगर जैसी भाषाओं में।
संपूर्णता के लिए, इंडेंट गाइड्स प्लगइन भी है, जो सफेद स्थानों के रंगों को वैकल्पिक रूप से इंडेंटेशन स्तर दिखाता है। इसके लिए संस्करण 7.2 या बाद के संस्करण की आवश्यकता है। चूँकि यह tabstop
और shiftwidth
चरों का उपयोग करता है , यह संभवतः आपकी इंडेंटेशन सेटिंग्स के लिए काम करेगा।
एक बार प्लगइन स्थापित हो जाने के बाद, आप बस उपयोग कर सकते हैं :IndentGuidesEnable
या कर सकते हैं :IndentGuidesDisable
। यदि आप टर्मिनल विम का उपयोग कर रहे हैं, तो ध्यान दें, मैनुअल के अनुसार,
फिलहाल टर्मिनल विम का केवल मूल समर्थन है। इसका मतलब यह है कि रंगों की गणना आपके कलर्सकेम के आधार पर स्वचालित रूप से नहीं की जाएगी। इसके बजाय, कुछ पूर्व निर्धारित रंगों का उपयोग इस आधार पर किया जाता है कि पृष्ठभूमि अंधेरे या प्रकाश पर सेट है या नहीं।
स्क्रीनशॉट के लिए गाइड के रंगों को बदलने के लिए, मैंने निम्नलिखित का उपयोग किया
let g:indent_guides_auto_colors=0
इसलिए रंगों को पुनर्गठित नहीं किया जाता है जब बफ़र्स को स्वैप किया जाता है, और फिर रंगों का उपयोग करके सेट करें
hi IndentGuidesEven ctermbg=238
hi IndentGuidesOdd ctermbg=236
प्रस्तुत अन्य समाधानों की तरह, यह केवल यह दर्शाता है कि लाइनों पर इंडेंट गाइड रिक्त स्थान थे।
let g:indent_guides_enable_on_vim_startup=1
स्टार्टअप पर इसे सक्षम करने के लिए मेरे .vimrc में जोड़ें ।
मैंने इंडेंटलाइन प्लगइन को इसके लिए सबसे अच्छा पाया है । आपको उपयुक्त प्रतीकों के साथ एक फ़ॉन्ट की आवश्यकता है, हालांकि, मुझे मैक ओएस एक्स पर विंडोज और मेनलो पर कंसोलस अच्छी तरह से काम करते हैं। जैसा कि ऊपर दिए गए एकीकृत उत्तर में बताया गया है, यह conceal
सही जगह पर वर्टिकल बार (इस्तेमाल किए गए फॉन्ट से) को डालने के लिए vim के फीचर का उपयोग करके (ab) काम करता है । मैं इस समाधान से बहुत खुश हूं लेकिन इसका नुकसान यह है कि मेरी ऊर्ध्वाधर पट्टियाँ बॉक्स-ड्राइंग ग्लिफ़ का हिस्सा हैं और वे अन्य संपादकों की तरह बाएं-संरेखित के बजाय केंद्र-संरेखित हैं। मुझे इसकी आदत हो गई है, लेकिन यह मैन्युअल रूप से आपके फॉन्ट को पैच करके या फंतासिक सैंस मोनो जैसे फॉन्ट का उपयोग करके तय किया जा सकता है (ध्यान दें कि लिंक किए गए गितुब रेपो में स्क्रीनशॉट इंडेंटलाइन का उपयोग कैसे करते हैं)।
इंडेंटलाइन प्लगइन गैर-छोटी फ़ाइलों पर काफी धीमी गति से चलता है, जब प्रवेश करने पर क्लिक करता है तो यह एक दूसरे या इतने से पिछड़ जाता है।
मैंने vim-indentguides को एक तेज और नेत्रहीन समान प्लगइन होने के लिए पाया है , जो नेत्रहीन टैब इंडेंट्स बनाम स्पेस इंडेंट्स को भी अलग करता है।