2012-01-06 6 views
5

मैं हमेशा एक ही समय में कई परियोजनाओं पर काम करते हैं। मेरे पास फाइलों की संख्या का टूटना निम्नानुसार हैक्या विम में कई परियोजनाओं को प्रबंधित करने के लिए कोई प्लगइन/तरीका है?

Project | Files 
-------------------------- 
    Thesis   20 
    Simulator  50 
    Plots   30 
    Graphs   30 
    Website  500+ 

इन सभी फ़ाइलों को एक विंडो में रखना बोझिल है। कई विकल्प हैं, और मैं उनके drawbracks पर चर्चा करेंगे, या मैं उनकी Achilles Heel कहने की हिम्मत।

  1. स्प्लिट विंडोज मैं 5 खिड़कियां, प्रत्येक परियोजना के लिए एक में vim विभाजित सकता है, लेकिन मैं भी एक पिनहोल के माध्यम से कोडिंग हो सकता है। मैं वास्तव में कभी भी विभाजित खिड़कियों का प्रशंसक नहीं रहा हूं, उन मामलों को छोड़कर जहां आप लगातार दो संबंधित फाइलों की तुलना और संपादन कर रहे हैं। इसके अलावा मुझे क्षैतिज दिशा में केवल दो आयामों में नेविगेटिंग नहीं मिलती है।

  2. टैब्स टैब्स, या बल्कि मूर्खता कहा जाता व्यूपोर्ट टैब, इस तरह की समस्या के लिए वास्तव में होने लगते हैं, लेकिन वे बफ़र्स का उपयोग करने के लिए प्रतिबंध प्रदान नहीं करते। उदाहरण के लिए, अगर मैं अपने Thesis टैब में हूँ, मैं केवल उन 20 बफ़र्स, सभी 500+ वेबसाइट से संबंधित बफर के रूप में अच्छी तरह से नेविगेट करने के लिए चाहते हैं। मैं इन सत्रों के रूप में बचत कर रहा हूँ के रूप में, यह संभावित समस्याओं को जन्म दे सकता है अगर मैं गलती से प्रवेश कर मैं दो website टैब पर मेरी Thesis टैब, बाहर निकलें में एक website बफर करने के लिए स्विच, तो। यह आगे समस्याग्रस्त क्योंकि मैं प्रत्येक टैब के लिए स्थानीय निर्देशिका (:lcd) की स्थापना की है है।

  3. टर्मिनल टैब टर्मिनल टैब का उपयोग सुनिश्चित करता है कि प्रत्येक टैब में बफर स्वतंत्र रहते हैं। हालांकि, प्रत्येक विम सत्र अब जानकारी साझा नहीं कर सकता है। मैं दूसरे के लिए एक टर्मिनल से पाठ झटका नहीं कर सकते हैं (मैं मैं + रजिस्टर में झटका सकता है लगता है)। मैं अब सभी बफर पर :buffdo का उपयोग नहीं कर सकता। साथ ही, मुझे यह तथ्य पसंद है कि मैं अपने सभी विम टैब को एक सत्र में सहेज सकता हूं।

मुझे पता है अतः सार्वजनिक चर्चा के लिए अभिशाप है, इसलिए मैं बजाय पूछना होगा अगर वहाँ मौजूद कार्यक्षमता मैं के लिए प्रयास कर रहा हूँ प्राप्त करने के लिए एक तरीका है।

EDIT मुझे जो कुछ चाहिए उसे सारांशित करने का एक अच्छा तरीका यह है कि मुझे "सब बफर" चाहिए। व्यूपोर्ट:

संपादित क्या मैं vim में टैब से बाहर निकलना चाहते हैं और अधिक प्रभावी ढंग से उन्हें वे वास्तव में क्या कर रहे हैं के रूप में उपयोग करने की क्षमता है। मैं अपने थीसिस सेक्शन के लिए विशेष रूप से एक टैब प्राप्त करने में सक्षम होना चाहता हूं। इस खंड में मैं स्थानीय निर्देशिका को इसे प्रतिबिंबित करने के लिए बदल दूंगा। इसके अलावा, मैं उस तालिका में बफर को केवल सभी बफर का सबसेट करने के लिए फ़िल्टर करना चाहता हूं। इसी तरह सिम्युलेटर टैब में मैं इसे विशेष रूप से अपने सिम्युलेटर फ़ाइलों के लिए उपयोग करना चाहता हूं।

अनिवार्य रूप से क्या मैं चाहता हूँ की क्षमता है, टैब के माध्यम से, vim के कई स्वतंत्र सत्र चलाने के लिए है, लेकिन अभी भी जोड़ा सुविधाओं में से कुछ के साथ (यानी। बंटवारे झटका करने में सक्षम होना पंजीकृत करता है)

+5

वास्तव में एक "विम समाधान" नहीं है, लेकिन आप एक वर्कस्पेस और प्रति परियोजना एक vim उदाहरण का उपयोग क्यों नहीं करते? प्रोजेक्ट्स के बीच स्विच करने के लिए आप बस एक और वर्कस्पेस पर स्विच करेंगे जहां सबकुछ उस प्रोजेक्ट के लिए जिस तरह से आप चाहते हैं उसे स्थापित कर सकते हैं। – beta

+0

कई बार मैं भूखंडों से परिणाम लेता हूं और उन्हें थीसिस में डालता हूं, फिर मैं थीसिस से सूत्र लेता हूं और उन्हें सिम्युलेटर में डालता हूं। मैं जो चाहता हूं वह सब बफर है। – puk

+1

मैं 3 लोगों को "बहुत से लोगों" नहीं कहूंगा। मैं वास्तव में आपके वर्कफ़्लो में कुछ भी नहीं समझता। आप हमेशा 'सीडी' क्यों करते हैं? आप अपनी '* .py' स्क्रिप्ट को उपनाम क्यों नहीं करते हैं या अपनी निर्देशिका को अपने '$ PATH' में जोड़ते हैं? या शायद एक विम विंडो में सबकुछ करें और अपनी स्क्रिप्ट को ' 'या जो भी हो? – romainl

उत्तर

4

मैं यह करने के लिए एक रास्ता पता चला। विम टैब बेकार के पास हैं। इसके बजाय मैंने जीनोम टर्मिनल टैब का इस्तेमाल किया।

  1. वैश्विक रजिस्टरों वैश्विक रजिस्टरों का उपयोग कर अनुकरण करने के लिए, तो के रूप में एक साथ अपने को लाइन set clipboard=unnamedplus जोड़कर vim, 'पाइप' सिस्टम क्लिपबोर्ड और बेनाम रजिस्टर के विभिन्न उदाहरणों भर में पेस्ट कॉपी करने के लिए सक्षम होने के लिए। vimrc फ़ाइल। इसका सभी यंक/डिलीट का प्रभाव है ... सिस्टम क्लिपबोर्ड पर ऑपरेशन की प्रतिलिपि बनाई जा रही है। वहां से, विम के अन्य उदाहरणों तक इसका उपयोग होगा। इसी तरह, आप विम के बाहर चिपकाने वाली किसी भी प्रतिलिपि को अब अनाम नाम में संग्रहीत कर लेंगे।

  2. ग्नोम टर्मिनल टैब शॉर्टकट अगले और पिछले टैब के लिए जाने के लिए डिफ़ॉल्ट शॉर्टकट CtrlPg ऊपर और CtrlPg डीएन हैं। के बाद से मैं अपने अगले और पिछले बफ़र्स के लिए शिफ्टकश्मीर और शिफ्टजे उपयोग करते हैं, मैं Ctrlकश्मीर और Ctrlजे मेरे अगले और पिछले टैब पर जाने के लिए मैप किया। सीधे शब्दों में ग्नोम टर्मिनल पर जाएं> संपादित करें> कीबोर्ड शॉर्टकट

  3. ग्नोम टर्मिनल टैब्स एक खोल स्क्रिप्ट लिखें एक नया टर्मिनल टैब के रूप में प्रत्येक vim उदाहरण लांच करने के लिए। See here for instructions

  4. विम उदाहरण अंत में, प्रत्येक vim उदाहरण के लिए एक सत्र फ़ाइल :mksession fileName

यह सही (उदाहरण के लिए, नामित रजिस्टरों टर्मिनलों भर में कॉपी नहीं किया जा सकता है) नहीं है को बचाने लेकिन यह में है मेरी राय, व्यूपोर्ट (यहां 'टैब' कहा जाता है) के अधिक प्रतिनिधि क्या करना चाहिए।


संपादित मैं वास्तव में vim टैब का उपयोग करने के लिए वापस चले गए हैं।मैं vim स्क्रिप्ट सीखा, और मेरे कुंजी मैप किया तो शिफ्टजम्मू और शिफ्ट पिछली/अगली बफ़र्स कोकश्मीर मानचित्र और Ctrlजम्मू पिछली/अगली टैब के लिए और Ctrlकश्मीर नक्शा। फिर मैंने tabname स्क्रिप्ट डाउनलोड की, इसलिए मैं सार्थक टैब नाम सेट कर सकता था, फिर टैब नामों को सहेजने के लिए विम सत्र बनाने में संशोधित किया गया था (here देखें), फिर जीवीआईएम से वापस विम तक स्विच किया गया ताकि मैं पूर्ण स्क्रीन मोड का उपयोग कर सकूं। यह एक लंबी कठिन यात्रा थी, लेकिन मुझे लगता है कि यह इसके लायक था।

1

मैं ehamberg से सहमत ।

विम के बफ़र्स वैश्विक हैं इसलिए किसी भी समूह या बंटवारे केवल कुछ ही मिनट के लिए काम करने के लिए और वास्तव में यह पहला अवसर पर तोड़ने दिखाई देगा।

इसके बजाय प्रत्येक परियोजना के लिए एक विम उदाहरण का उपयोग करें। यदि आपको वास्तव में कुछ साझा करने की आवश्यकता है तो आप हमेशा सिस्टम क्लिपबोर्ड का उपयोग कर सकते हैं।सिस्टम क्लिपबोर्ड के साथ विम के डिफ़ॉल्ट रजिस्टर को सिंक्रनाइज़ करने के लिए set clipboard+=unnamedplus आज़माएं।

लेकिन मैं सोच रहा हूँ अगर परियोजनाओं के प्रबंधन के तरीके तर्कसंगत है:

  • बिंदु 3 में आप लिखना "मैं भी कर सकते हैं अब का उपयोग करें: सभी बफ़र्स पर buffdo।"। आप एक कमांड का उपयोग क्यों करेंगे जो कई अलग-अलग परियोजनाओं में सभी खुले बफर पर काम करता है?

  • क्या आपके पास गंभीर समय में 500+ बफर खुले हैं? मुझे पता है कि विम शायद इसे संभाल सकता है लेकिन आप इतने सारे बफर क्यों खोलते हैं? मैं एक जीवित रहने के लिए वेब विकास करता हूं और किसी भी दिन, "बड़ी" परियोजनाओं पर भी, मैं शायद ही कभी एक दर्जन से अधिक फ़ाइलों पर काम करता हूं।

+0

wrt बुलेट 1 का उल्लेख किया है: वे उस ग्रे क्षेत्र में हैं जहां वे कुछ हद तक संबंधित हैं: मेरी थीसिस उन परिणामों को उत्पन्न करती है जो साजिशबद्ध हैं, फिर मैं कुछ लेता हूं उन भूखंडों से टेस्ट कोड और मेरे थीसिस में वापस प्लग करें, इसी तरह, मैं अपने सिम्युलेटर – puk

+0

wrt बुलेट 2 में अपने थीसिस से कोड का उपयोग करता हूं: मुझे लगा कि मेरा कंप्यूटर इसे संभाल सकता है = पी लेकिन मैं अपने दृष्टिकोण पर पुनर्विचार करूंगा। – puk

+0

मैं चाहता हूं कि प्रत्येक टैब में (वेबसाइट टैब को छोड़कर) '+ bn' (' Shift + J' पर मैप किया गया) फ़ाइलों के माध्यम से चक्र के रूप में चक्र के विपरीत 600+ फाइलों – puk

1

BufExplorer प्लगइन टैब द्वारा बफर समूह कर सकते हैं। CtrlP प्लगइन किसी अन्य टैब से बफर का पुन: उपयोग कर सकता है।

+0

इसके अलावा घर ब्रूड विस्क्रिप्ट https://github.com/DXist/dotvim/blob/master/after/plugin/lighthouse.vim है जिसे मैं टैब द्वारा प्रोजेक्ट समूह के लिए उपयोग करता हूं। यह प्रत्येक टैब और बफर के लिए प्रोजेक्ट को संभालता है। परियोजनाओं को .vim/projects.vim फ़ाइल में कॉन्फ़िगर किया गया है। –

1

मैं विभिन्न परियोजनाओं के साथ-साथ काम करने के लिए कई विम उदाहरणों का उपयोग कर रहा था लेकिन यह संतोषजनक नहीं था। मैं अपने टर्मिनल में कई खुले टैब के साथ समाप्त हो गया।

मैं विम-रूटर का उपयोग कर रहा हूं, जो एक साधारण प्लगइन है जो आपके द्वारा खुले बफर के प्रोजेक्ट रूट में स्वचालित रूप से कार्यशील निर्देशिका को बदल देगा, बशर्ते प्रोजेक्ट रूट पर एक .git dir है। यह केवल कुछ एक्सटेंशन के साथ फ़ाइलों को खोलकर ही ट्रिगर किया जाएगा, लेकिन उस सूची को अनुकूलित किया जा सकता है। Ctrlp और किसी अन्य प्लगइन के साथ काम करता है।

1

मेरे पास एक ही समय में एक ही समस्या है, कई परियोजनाओं के साथ एक ही समय में काम करना।

आंशिक रूप से इस निराशा को हल करने के लिए, मैंने इस प्लगइन का उपयोग https://github.com/xolox/vim-session किया है।

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

अब मेरे लिए सबसे अच्छा समाधान विम मोड के साथ Spacemacs है। मुझे वास्तव में संपादन भावना पसंद है जो विम ऑफ़र और अनुभव स्पेसमैक्स + बेहतर प्रोजेक्ट हैंडलिंग + बेहतर गिट एकीकरण के साथ समान है।

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

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