इंडेंटेशन गाइड / लाइन कैसे जोड़ें


42

उदात्त पाठ 2 में, आपको लंबवत मार्गदर्शिकाएँ मिलती हैं जहाँ आपका इंडेंटेशन इस प्रकार है:

उदात्त पाठ स्क्रीनशॉट

लेकिन मैं स्पष्ट रूप से नहीं हूँ:

vim स्क्रीनशॉट

वहाँ एक तरह से लाइनों को दिखाने के लिए रास्ता है? वैसे, मेरा इंडेंटेशन 2 जगह है।

:set tabstop=2 softtabstop=2 shiftwidth=2 expandtab

जवाबों:


39

एकीकृत उत्तर:

यदि आप टैब का उपयोग कर रहे हैं

मैं 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कोई बार नहीं है, एक दृश्य अंतर बना रहा है)


वास्तव में, मैं टैब के बजाय इंडेंट करने के लिए रिक्त स्थान का उपयोग कर रहा हूं। मैंने अपना प्रश्न अपडेट कर दिया है।
अहर्निश

ओह। फिर, इसके लिए और अधिक शोध की आवश्यकता होगी।
जॉन ओ.एम.

1
गैर-अनुगामी रिक्त स्थान के लिए लिस्टचर्स बनाने के लिए एक पैच है, जिसे आप मेलिंग सूची पर खोद सकते हैं। हालाँकि, इसे आधिकारिक वितरण में स्वीकार नहीं किया गया है :(

1
वैभव सागर और जोश पेट्री से जानकारी शामिल करने के लिए अद्यतित उत्तर। मैंने प्लगइन वैभव का उल्लेख किया और संपादित उत्तर में परिणाम दिखाए। मुझे लगता है कि मैं खुद इस प्लगइन का उपयोग शुरू करने जा रहा हूं। यह शानदार नहीं है, लेकिन सामान्य तौर पर यह बहुत अच्छा काम करता है।
जॉन ओ.एम.

क्या गाइड को प्राप्त करना संभव है जैसे कि वे रिक्त लाइनों पर दिखाई देते हैं जैसे वे उदात्त में करते हैं?
जेम्स

19

एक अन्य विकल्प जो मैं उपयोग करता हूं, जो आपके द्वारा पूछे गए बिलकुल नहीं है, लेकिन यह उसी उद्देश्य को पूरा करने में आसान बनाता है जो यह देखना है कि एक ही कॉलम में क्या है, निम्न को अपने में सेट करना है vimrc:

set cursorcolumn
set cursorline

विलक्षण चित्रण

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


पायथन vi उपयोगकर्ता इस सुविधा के लिए मर जाएंगे
shuva

18

संपूर्णता के लिए, इंडेंट गाइड्स प्लगइन भी है, जो सफेद स्थानों के रंगों को वैकल्पिक रूप से इंडेंटेशन स्तर दिखाता है। इसके लिए संस्करण 7.2 या बाद के संस्करण की आवश्यकता है। चूँकि यह tabstopऔर shiftwidthचरों का उपयोग करता है , यह संभवतः आपकी इंडेंटेशन सेटिंग्स के लिए काम करेगा।

Imgur

एक बार प्लगइन स्थापित हो जाने के बाद, आप बस उपयोग कर सकते हैं :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 में जोड़ें ।
inye

9

मैंने इंडेंटलाइन प्लगइन को इसके लिए सबसे अच्छा पाया है । आपको उपयुक्त प्रतीकों के साथ एक फ़ॉन्ट की आवश्यकता है, हालांकि, मुझे मैक ओएस एक्स पर विंडोज और मेनलो पर कंसोलस अच्छी तरह से काम करते हैं। जैसा कि ऊपर दिए गए एकीकृत उत्तर में बताया गया है, यह concealसही जगह पर वर्टिकल बार (इस्तेमाल किए गए फॉन्ट से) को डालने के लिए vim के फीचर का उपयोग करके (ab) काम करता है । मैं इस समाधान से बहुत खुश हूं लेकिन इसका नुकसान यह है कि मेरी ऊर्ध्वाधर पट्टियाँ बॉक्स-ड्राइंग ग्लिफ़ का हिस्सा हैं और वे अन्य संपादकों की तरह बाएं-संरेखित के बजाय केंद्र-संरेखित हैं। मुझे इसकी आदत हो गई है, लेकिन यह मैन्युअल रूप से आपके फॉन्ट को पैच करके या फंतासिक सैंस मोनो जैसे फॉन्ट का उपयोग करके तय किया जा सकता है (ध्यान दें कि लिंक किए गए गितुब रेपो में स्क्रीनशॉट इंडेंटलाइन का उपयोग कैसे करते हैं)।


4
कृपया प्लगइन-लिंक-केवल उत्तरों की हमारी चर्चा पर एक नज़र डालें और अधिक जानकारी के साथ अपने उत्तर को अपडेट करने पर विचार करें।

मेरी गलती, मैंने अपना उत्तर अपडेट कर दिया है।
वैभव सागर

कौन सी ग्लिफ़ पैच वाली खड़ी रेखा है? क्या आप इसे यहाँ पेस्ट कर सकते हैं? धन्यवाद।
तिमत्रो

2

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

मैंने vim-indentguides को एक तेज और नेत्रहीन समान प्लगइन होने के लिए पाया है , जो नेत्रहीन टैब इंडेंट्स बनाम स्पेस इंडेंट्स को भी अलग करता है।

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