मैं विम के कोड को कैसे बदल सकता हूं?


28

Emacs में कोड तह

कभी-कभी मैं पाठ के एक ब्लॉक को मोड़ना चाहता हूं। विम में आप फ़ज़ के बिना तह करना आसान है। "मार्कर" या विशिष्ट रेगेक्स जैसे किसी विशेष वर्ण को जोड़ने के बिना {{{। मैं संरचना के साथ खिलवाड़ किए बिना एक क्षेत्र का चयन करना और इसे मोड़ना चाहूंगा।

जब चारों ओर देखते हैं, तो ऐसा लगता है कि Emacs में कोड फोल्डिंग के बारे में पहले से ही सवाल थे। किसी ने कहा कि "कोई सही समाधान नहीं था"। उदाहरण के लिए, मैंने विम में सरल कोडफोलिंग की एक क्लिप बनाई:

विम सादे तह

यहाँ छवि विवरण दर्ज करें

+ काफी सरल, एक क्षेत्र का चयन करें और इसे मोड़ो।
+ यह लगातार है। जब आप बफर / करीबी विम को मारते हैं। और फ़ाइल को फिर से खोलें, तह अभी भी हैं।
+ आपको एक हाइलाइट बार मिलता है, आसानी से देखने के लिए कि क्या मुड़ा हुआ है।

विम के लिए कई अन्य तह विन्यास हैं। मैं Emacs से खुश हूं, लेकिन यह एक चीज है जो मुझे याद आती है। अन्य विकल्प जो मैंने कोशिश की, उदाहरण के लिए HideShow:

छिपाएं दिखाएं

यहाँ छवि विवरण दर्ज करें

के साथ बुराई का विकल्प hide-show minor mode। मुझे यह अनुपयोगी लगा:

- मैं एक क्षेत्र का चयन करने और उसे तह करने में सक्षम नहीं हूं। यह कोड ब्लॉक पर तह करता है।

- वहाँ कोई higlihgting बार या कुछ है, आप इसे तह करने के लिए भाग लेने के लिए। आप इसे आसानी से याद कर सकते हैं।

- यह लगातार नहीं है। यदि आप फ़ाइल को फिर से खोलते हैं, तो तह चले गए हैं।

एक और पैकेज है, इसे मोड़ो :

इसे मोड़ो

यहाँ छवि विवरण दर्ज करें

- यह एक सुंदर विकल्प है। हालाँकि, यह इंडेंटेशन के साथ गड़बड़ करता है, क्योंकि फोल्ड के नीचे का टेक्स्ट फोल्ड के बगल में रखा जाता है ... (?)।

- यह केवल नेत्रहीन क्षेत्र का चयन करने और इसे मोड़ने में सक्षम है। लेकिन यह अभद्रता को तोड़ता है, इसलिए अवलोकन गड़बड़ हो जाता है। बहुत काम नहीं है।

- कोई भी higlihgting बार या कुछ और नहीं है, इसमें शामिल होने के लिए आप मुड़े हुए हैं। आप इसे आसानी से याद कर सकते हैं।

मुद्दा क्या है?

मैं यह दोहराना चाहूंगा कि विम कैसे तह करता है। लेकिन जब मैंने आसपास खोज की, तो ऐसा लगता है कि Emacs में ऐसा करना बहुत कठिन है। तो मुझे आश्चर्य है कि अगर वहाँ emacs या इसकी वास्तुकला में कुछ है जो इसे दोहराने के लिए मुश्किल बनाता है? सीमाएं क्या हैं?


2
मुझे लगा कि प्रश्न बहुत व्यापक था, इसलिए मैंने उस आधार पर मतदान करने के लिए मतदान किया। मैं सलाह दूंगा कि मूल पोस्टर पुस्तकालयों के एक जोड़े को चुनें जो मांगी गई कुछ सुविधाएँ प्रदान करते हैं, और फिर उन्हें वांछित रूप में संयोजित / संशोधित करते हैं। यदि ओपी किसी विशेष सुविधा को लागू / संशोधित करने में परेशानी में है , तो उस एक मुद्दे तक सीमित एक विशिष्ट प्रश्न पोस्ट करें। ओपी संभवतः वांछित दृश्य प्रभाव प्राप्त कर सकता है , लेकिन इसे समय के साथ काम करने के लिए चल रही परियोजना बनाने के लिए तैयार रहना चाहिए।
कानून

3
क्या आप बता सकते हैं कि आपको कौन सी फोल्डिंग सुविधाएँ चाहिए? एक नियम के रूप में, आप इस साइट पर लोगों से यह जानने की उम्मीद नहीं कर सकते कि विम कोड फोल्डिंग कैसे काम करता है, और वैसे भी आपको हमें यह बताना चाहिए कि आपको कौन सी सुविधाएँ विशेष रूप से चाहिए। आपके द्वारा प्रदान की जाने वाली एकमात्र जानकारी जो आप चाहते हैं वह एक एनीमेशन है जो केवल एक उदाहरण दिखाता है, और वैसे भी मुझे पता नहीं है कि यह क्या दिखाता है: वे यह नहीं दिखाते हैं कि आपके द्वारा उपयोग किए जाने वाले आदेश क्या हैं, आपने कर्सर को इस या उस स्थान पर क्यों स्थानांतरित किया, आदि। । प्लस एक विशिष्ट ब्राउज़र में वे एक लूप पर खेलते हैं और यह दोहराना असंभव है कि एक दोहराव कब शुरू होता है।
गिल्स एसओ- बुराई को रोकें '

3
इस सवाल से पकड़ को हटा दिया जाना चाहिए। जैसा कि वर्तमान में यह खड़ा है यह यथोचित विशिष्ट है। प्रश्न का उत्तर नहीं होना, इसे बंद करने का एक अच्छा कारण नहीं है।
इस्टा

2
ar-hide-area-atpt, ar-show-region-atpt से 'बात-पर-बिंदु-utils.el', github.com/andreas-roehler/thing-at-point-utils - कृपया अन-ब्लॉक करें एक नियमित उत्तर हो सकता है।
एंड्रियास रोहलर

1
यह प्रश्न, जैसा कि मैं इसे समझता हूं, मूल रूप से है: " कोई व्यक्ति: कृपया Emacs के लिए एक पूरी लाइब्रेरी लिखें, जो विम में पाए जाने वाले सटीक कोड-फोल्डिंग फीचर्स प्रदान करेगा। " मैं कुछ टिप्पणियों और अप-वोटों से देखता हूं कि पर्याप्त हैं। जो लोग इसे देखना चाहते हैं वे एक वास्तविकता बन जाते हैं। हालाँकि, मैं यह नहीं देखता कि यह उत्तर में यथोचित कैसे फिट हो सकता है - प्रस्तावित नई लाइब्रेरी को मुद्दों और बग-फिक्स के साथ बनाए रखना होगा। मैं भी किसी को कोड तह के लिए शांत नई सुविधाओं के साथ एक पूरी लाइब्रेरी लिखने का मन नहीं होगा।
कानून

जवाबों:


16

बाहर की कोशिश करो vimish-fold

विशेषताएं

  • बैटरी शामिल हैं: मामूली मोड को सक्रिय करें, कुछ आदेशों को बांधें और सब कुछ बस काम करेगा;

  • यह आपके द्वारा चुने गए क्षेत्रों पर काम करता है;

  • यह लगातार है: जब आप फ़ाइल बंद करते हैं तो आपके फोल्ड गायब नहीं होते हैं;

  • लगातार होने के अलावा, यह अच्छी तरह से तराजू है, आप प्रतिकूल प्रभाव के बिना कई गुना के साथ सैकड़ों फाइलों पर काम कर सकते हैं;

  • यह स्पष्ट है कि पाठ के कौन से भाग मुड़े हुए हैं;

  • यह इंडेंटेशन या कुछ तोड़ नहीं करता है;

  • यह सिर्फ प्रकट किए गए गुना (ओह, मेरे) को प्रकट कर सकता है;

  • avyपैकेज के प्रशंसकों के लिए : आप avyपाठ को कुंजी स्ट्रोक की न्यूनतम संख्या के साथ मोड़ने के लिए उपयोग कर सकते हैं !

प्रयोग

इन सभी कार्यों में से कुछ के लिए बाइंडिंग बनाएं:

  • vimish-fold - चयनित क्षेत्र की बुनियादी तह;

  • vimish-fold-unfold- आपको वास्तव में इसे बांधने की आवश्यकता नहीं है, बस C-gजब मुड़ा हुआ पाठ का प्रतिनिधित्व करने वाले शीर्ष लेख पर बिंदु का उपयोग किया जाता है;

  • vimish-fold-unfold-all - फिर भी यह उपयोगी हो सकता है;

  • vimish-fold-refold - हाँ, आप इसे वापस मोड़ सकते हैं;

  • vimish-fold-avy- avyअपने पाठ को मोड़ने के लिए उपयोग करें!

आप उन vimish-fold-modeमोड के लिए चुनिंदा रूप से बदल सकते हैं, जहां आप लगातार तह करना चाहते हैं, या बस इसे हर जगह सक्रिय करें:

(vimish-fold-global-mode 1)

क्या आपके पास कोई सुझाव दिया गया महत्वपूर्ण बाइंडिंग है? जब आप C ++ मोड में होते हैं तो आप किन बाइंडिंग का उपयोग करते हैं? सी मोड? पायथन मोड? लिस्प मोड? ELisp मोड? जावास्क्रिप्ट मोड?
Reb.Cabin

1
@ Reb.Cabin, यह मोड-विशिष्ट पैकेज नहीं है, इसलिए वैश्विक कुंजी बाइंडिंग सबसे अच्छा विकल्प है। मैं कुंजी बाइंडिंग का उपयोग कर रहा हूं जिसमें की-कॉर्ड शामिल नहीं है और ज्यादातर लोग उन्हें थोड़ा अजीब मानते हैं, वर्तमान में मेरे पास है: menu v fvimish-fold, menu v avimish-fold-avy, menu v uvimish-fold-unfold-all, menu v vvimish-fold-refold। मेरी ज्यादातर कीबाइंड इस तरह हैं, यह मेरा कॉन्फिगर है
मार्क कार्पोव

क्या यह बुरी गतियों और टेक्स्टोबिज के साथ एकीकृत है?
PythonNut

1
हम्म ... मैं एक पीआर पर काम शुरू करूँगा।
PythonNut

1
मैं, एक के लिए, पूरी तरह से अनुपयोगी विम-गुना लगता हूं। शायद यह उन लोगों के लिए पहले से ही सहज है जो कोड-तह से परिचित हैं ... मुझे नहीं पता। इसके अलावा, मुझे समझ नहीं आ रहा है कि ऑर्ग-मोड में फोल्डिंग इतनी अच्छी तरह से क्यों काम करती है, लेकिन Emacs में अभी भी अच्छा कोड-फोल्डिंग नहीं है ...
kjo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.