Vim में कोड फोल्डिंग को इनेबल और उपयोग कैसे करें?


48

मैं कैसे सक्षम कर सकते हैं और कर विम में कोड तह?

क्या मुझे कुछ भी बदलना है ~/.vimrc?

मैं z+ aऔर z+ cऔर z+ टाइप करता हूं oऔर कुछ भी नहीं होता है।

यहां फोल्डिंग के बारे में एक लेख है: विम में कोड फोल्डिंग

जवाबों:


40

नहीं ~/.vimrc, आपको आपके द्वारा लिंक किए गए पृष्ठ से कमांड नहीं डालना है , आप कमांड प्रॉम्प्ट प्राप्त करने :के vimलिए जारी करने के बाद उन्हें टाइप कर सकते हैं ।

हालांकि अगर आप लाइनें डालते हैं:

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

जैसा कि आपके द्वारा दिए गए लिंक में इंगित किया गया है ~/.vimrc, आपके पास, आपको हर बार जब आप किसी फ़ाइल में तह का उपयोग करना चाहते हैं, तो उन्हें टाइप करने की आवश्यकता नहीं है। यह set nofoldenableसुनिश्चित करता है कि खोलते समय, फाइलें "सामान्य" हों, अर्थात मुड़ी हुई न हों।


मेरे पास एक कोड है जो C द्वारा लिखा गया है, इसलिए उसके कार्यों में से एक है। मैं कमांड में जाने के लिए <kbd> esc </ kbd> दबाता हूं, उसके बाद:, मैं zc लिखता हूं और कुछ भी नहीं होता है।
मोहम्मद रेज़ा रेजवानी

1
@alex zc के बाद आपको टाइप नहीं करना चाहिए :। टाइप करने के setबाद मिलने वाले प्रॉम्प्ट के बाद आप कमांड टाइप करते हैं :zcआप प्रकार जब आप स्वतंत्र रूप से कर्सर ले जाने के कर सकते हैं, जैसा कि आप का प्रयोग करेंगे ztपाठ कर्सर वर्तमान स्क्रीन के शीर्ष करने के लिए पर है पाने के लिए।
एंथन

39

डिफ़ॉल्ट रूप से मोड़ो

विम की डिफ़ॉल्ट तह विधि का manualअर्थ है कि सिलवटों को मैन्युअल रूप से बनाया गया है; अन्यथा, वहाँ बंद या का उपयोग कर खोले जाने के लिए कोई गुना है za, zoया zcके रूप में आप का वर्णन किया। लेकिन, आप एक से गुना बना सकते हैं zf{motion}में सामान्य मोड या zfमें दृश्य मोड; उदाहरण के zfjलिए वर्तमान लाइन के लिए एक गुना बनाता है और अगले एक सामान्य मोड में।

द्वारा मोड़ो indent

@Anthon द्वारा स्वीकृत उत्तर, वर्णन करता है कि तह विधि कैसे सेट की जाए indent; यानी तह को इंडेंटेशन के स्तर से परिभाषित किया जाता है।

द्वारा मोड़ो syntax

अधिक सुविधाजनक तरीके से, वर्तमान बफर की भाषा सिंटैक्स के आधार पर स्वचालित रूप से सिलवटों का निर्माण किया जा सकता है। यदि आप एक प्रोग्रामिंग लैंग्वेज का उपयोग कर रहे हैं, तो इसे L कहें , और आपके पास L की फोल्डिंग परिभाषा है (जैसे आपने एक Vim प्लगइन स्थापित किया है, जिसमें L की फोल्डिंग जानकारी परिभाषित है; जैसे C. Cim के लिए c.vim , या python; -Mode अजगर के लिए), तुम बस करने के लिए विधि तह निर्धारित करने की आवश्यकता syntax:

set foldmethod=syntax

बस। सिलवटों के साथ काम करने के लिए सबसे उपयोगी आदेश हैं:

  • zo कर्सर पर एक गुना खोलता है।
  • zShift+ oकर्सर पर सभी सिलवटों को खोलता है।
  • zc कर्सर पर एक गुना बंद कर देता है।
  • zmएक से बढ़ foldlevelजाता है।
  • zShift+ mसभी खुले सिलवटों को बंद कर देता है।
  • zrfoldlevelएक-एक करके घटता है ।
  • zShift+ rघटकर foldlevelशून्य हो जाता है - सभी तह खुले रहेंगे।

14

आपको इसे व्यवस्थित रूप से उपयोग करने की आवश्यकता नहीं है: मैं आमतौर पर गति या अनुभाग द्वारा मैन्युअल रूप से सिलवटों का चयन करता हूं। उदाहरण के लिए, एक पैराग्राफ को zfipमोड़ना और अगले 20 पंक्तियों को मोड़ना है zf20jzaटॉगल और zdहटाने के लिए उपयोग करें ।

इसके लिए थोड़ा और काम करने की आवश्यकता है लेकिन यह आपके तह को कार्य को हाथ में लेने की अनुमति देता है।


4

आप foldingवर्तमान सत्र में @ एंथन के उत्तर की तरह सक्षम कर सकते हैं । लेकिन अगर आप इसे स्थायी बनाना चाहते हैं, तो आपको कम से कम इस लाइन .vimrcको फोल्डिंग वर्क में सेट करना होगा :

set foldmethod=indent

indent तह की तरह है, आप अधिक से देख सकते हैं :help foldmethod

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.

अब, हर बार जब आप किसी फ़ाइल को खोलते हैं vim, तो आप देख सकते हैं कि कोड आपके द्वारा सेट की गई विधि द्वारा मोड़ा हुआ है। तो फिर तुम उपयोग कर सकते हैं za, zc, zo


Vimrc का उपयोग करने की कोई आवश्यकता नहीं है, मैंने ऐसा कभी नहीं किया, जैसा कि मैं कभी
एंथन

@ एंथन: ओह, बिल्कुल। मैं अपने उत्तर में अधिक जानकारी जोड़ूंगा।
congonglm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.