2009-11-16 12 views
9

में सभी फ़ंक्शंस को विम करने के लिए मैं नौसिखिया उपयोगकर्ता हूं और मैं इंटरनेट में नहीं ढूंढ पा रहा हूं कि कार्यों को कैसे पतन करें और मैंने यह पता लगाया है कि सी में तर्क सूची कैसे पतन करें zfa} और zfa के साथ)। लेकिन मैं यह नहीं समझ सकता कि टिप्पणी अनुभागों को कैसे ध्वस्त किया जाए। मैं उसको कैसे करू?टिप्पणियों को संकुचित करें और vim/gvim

दूसरा प्रश्न लेकिन संबंधित, क्या एक ही समय में सभी कार्यों/तर्क सूचियों/टिप्पणियों को एक ही समय में ध्वस्त करने का कोई तरीका है?

उत्तर

21

जिस कार्यक्षमता का आप उल्लेख कर रहे हैं उसे "फोल्डिंग" कहा जाता है (:help usr_28 देखें)। zf कमांड मैन्युअल रूप से फोल्ड बनाने के लिए उपयोग किया जाता है और केवल तभी उपयोग किया जाता है जब foldmethod विकल्प या तो "मार्कर" या "मैन्युअल" पर सेट हो। आपके द्वारा दिए गए उदाहरणों में, आप a} और a) टेक्स्ट ऑब्जेक्ट्स द्वारा निर्दिष्ट क्षेत्रों में फ़ोल्डर्स बना रहे हैं (:help usr_4.8 देखें)।

सी के लिए, आप setlocal foldmethod=syntax कर सकते हैं और फ़ोल्डिंग क्षेत्र स्वचालित रूप से वाक्यविन्यास नियमों द्वारा निर्धारित किए जाएंगे। यह केवल ~/.vim/ftplugin/c.vim में सेटिंग डालने या अपने ~/.vimrc में निम्न autocmd डालकर सी फ़ाइलों के लिए किया जाना चाहिए।

autocmd FileType c setlocal foldmethod=syntax 

एनबी। उन दोनों की आवश्यकता है कि फ़ाइल टाइप पहचान सक्षम है (filetype on), और ftplugin समाधान की आवश्यकता है कि फ़ाइल प्रकार प्लगइन्स सक्षम हैं (filetype plugin on)। उत्तरार्द्ध पूर्व का सुपरसैट है, इसलिए आपको अपने ~/.vimrc दोनों आदेशों की आवश्यकता नहीं है।

खोलने के लिए के रूप में/वर्तमान बफर में सभी परतों को बंद करने, उन zआर और zएम आदेशों क्रमशः रहे हैं।

+0

एक और चीज़ की आवश्यकता है। सिंटेक्स बहुत अच्छा काम करता है लेकिन मुझे zfa को परिभाषित नहीं करने देता है) ताकि मैं तर्क सूचियों को ध्वस्त कर सकूं। मेरे पास कुछ वाकई लंबी सूचियां हैं जिन्हें मुझे देखने की आवश्यकता नहीं है कि उनमें क्या है और यह स्वचालित रूप से पतन करने के लिए वास्तव में आसान होगा लेकिन यह मुझे सिंटैक्स मोड में ऐसा करने नहीं देगा और मेरे पास परिभाषित करने के लिए परिभाषित मोड के लिए बहुत सारे फ़ंक्शन हैं । –

+0

दुर्भाग्य से, आप एक ही समय में एकाधिक foldmethods का उपयोग नहीं कर सकते हैं और मैन्युअल फोल्ड सृजन केवल मार्कर/मैन्युअल विधियों के लिए काम करता है। आप सिंटैक्स/c.vim को सिस्टम-व्यापी निर्देशिका से ~/.vim/syntax/c.vim में कॉपी कर सकते हैं और "फ़ोल्ड" कीवर्ड को cParen सिंटैक्स परिभाषाओं के अंत में जोड़ सकते हैं। नकारात्मकता यह है कि आपको ऐसा करने की आवश्यकता होगी जब भी जब भी नए प्रमुख विम रिलीज किए जाते हैं तो आप अपस्ट्रीम किए गए किसी भी बदलाव को खोना नहीं चाहते हैं। यह भी आवश्यक है कि आप एक अलग लाइन पर "{" खोलें, अन्यथा इसका गुना तर्क सूची गुना ओवरराइड करेगा। – jamessan

0

मान लें कि आपने अपने फ़ोल्ड क्षेत्रों को सेट अप किया है, आप वांछित स्तर पर foldlevel सेट करें।

5

के लिए निम्न सेटिंग जोड़ें ~/.gvimrc:

"folding settings 
set foldmethod=indent "fold based on indent 
set foldnestmax=10  "deepest fold is 10 levels 
set nofoldenable  "dont fold by default 
set foldlevel=1   "this is just what i use 

तो फिर तुम ZA साथ तह बदल सकते हैं। आप जेडएम के साथ सब कुछ जोड़ सकते हैं और जेडआर के साथ सब कुछ प्रकट कर सकते हैं। जेएम और जेआर का उपयोग उन फ़ोल्डरों को ठीक करने के लिए किया जा सकता है। अगर आप अटक जाते हैं तो हमेशा "सहायता: तह" पर सर्वशक्तिमान सहायता फ़ाइल को याद रखें।

स्रोत: http://smartic.us/2009/04/06/code-folding-in-vim/

संबंधित मुद्दे