मौजूदा विंडो को मौजूदा टैब पर ले जाएं


14

कभी-कभी मुझे खिड़कियों को पहले से मौजूद टैब में स्थानांतरित करने की आवश्यकता होती है, और मैं सोच रहा था कि क्या कोई कमांड / कीबोर्ड शॉर्टकट था जो ऐसा कर सकता था। मुझे पता है कि मैं खिड़की बंद कर सकता हूं, टैब पर स्विच कर सकता हूं, और फिर इसे एक नए विभाजन में खोल सकता हूं, लेकिन मैं सोच रहा था कि क्या यह पूरा करने का एक छोटा तरीका था। ध्यान दें कि मैं इसे मौजूदा टैब पर ले जाना चाहता हूं , जैसे <C-w>Tकि नया टैब नहीं।


टैब में विंडो को स्थानांतरित करना संभव नहीं है।
lcd047

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

मुझे लगता है कि आप जो सबसे अच्छा कर सकते हैं, वह सभी विंडो सेटिंग्स को सहेजना है और फिर मौजूदा टैब पर इसे फिर से बनाना है।
tommcdo

जवाबों:


10

हालाँकि वर्तमान टैब पृष्ठ में मौजूदा विंडो को इधर-उधर ले जाने के आदेश हैं (यानी घूर्णन, आकार बदलने और हिलाने से विंडो लेआउट को प्रभावित करते हैं), विंडो को दूसरे टैब पर ले जाने के लिए कोई कमांड नहीं हैं।

एक खिड़की के रूप में सिर्फ एक भरी हुई बफर में एक viewport है, आप के लिए है:

  1. वर्तमान विंडो में प्रदर्शित बफर नंबर पर ध्यान दें।
  2. :close! खिड़की।
  3. मौजूदा लक्ष्य टैब पृष्ठ पर स्विच करें।
  4. :sbuffer इसे फिर से खोलने के लिए बफर नंबर।

आप इसके द्वारा कोई भी विंडो-विशिष्ट विकल्प खो देंगे। आप स्क्रिप्ट में उन लोगों को भी सहेज और पुनर्स्थापित कर सकते हैं।


मुझे लगा कि यह मामला था। मैं शायद एक छोटी सी स्क्रिप्ट बना सकता था जो वास्तव में ऐसा ही करती है।
एवरग्रीनट्री

2
  1. मौजूदा लक्ष्य टैब पर जाएं
  2. आप चाहते हैं, लेकिन इसे विभाजित करें
  3. :b ab(शेष टैब को पूरा करें)

abबस यादृच्छिक पत्र हैं, अपने वांछित फ़ाइल नाम की शुरुआत के साथ बदलें। :bटैब-समापन ने मेरे लिए बहुत अच्छा प्रदर्शन किया है, यह आमतौर पर सिर्फ एक अक्षर और 1-2 Tabकुंजीपट के आधार पर सही स्रोत बफर पा सकता है ।

इंगो के इस दृष्टिकोण का लाभ कुछ भी ध्यान देने या याद रखने की कमी है, जिसका अर्थ कम संज्ञानात्मक भार है। फ़ाइल का नाम जिसे आप पहले से ही जानते हैं।


2

नीचे परिभाषित दो कमांड सभी बफ़र्स को दाहिने हाथ के टैब से चालू टैब में ले जाते हैं और फिर दाहिने हाथ के टैब को बंद कर देते हैं। Mtabspउन्हें क्षैतिज रूप से विभाजित करके और Mtabvspलंबवत रूप से विभाजित करके चलता है । कमांड का उपयोग करने से पहले आपको मर्ज किए गए टैब को स्थानांतरित करने की आवश्यकता है। का उपयोग करें +tabm, -tabmया <n>tabm

सेट अप

नीचे दी गई विम स्क्रिप्ट को अपने में जोड़ें vimrc:

function! Mtab(vert)
    if tabpagenr() == tabpagenr("$")
        return 0
    endif
    +tabnext
    let s:killed_tab = tabpagenr()
    let s:buf_list = tabpagebuflist()
    -tabnext
    for item in s:buf_list
        if a:vert
            vsp
        else
            sp
        endif
        execute "buf " . item
    endfor
    execute "tabclose " . s:killed_tab
endfunction

command! Mtabsp call Mtab(0)
command! Mtabvsp call Mtab(1)

तकनीकी जानकारी

फ़ंक्शन माउंटब एक पैरामीटर प्राप्त करता है vert। यह निर्धारित करता है कि क्या वर्तमान टैब क्षैतिज या लंबवत रूप से विभाजित है।

निम्न चरणों के साथ वांछित परिणाम प्राप्त किया जाता है:

  1. हम अस्थायी रूप से अगले टैब पर जाते हैं
  2. इसकी टैब संख्या और बफ़र्स को संदर्भित करने के लिए दो चर का उपयोग करें
  3. वर्तमान टैब पर लौटें
  4. हम टैब को विभाजित करते हैं और प्रत्येक बफर को खोलते हैं
  5. अंत में, हम दाहिने हाथ का टैब बंद करते हैं

यदि हमारा वर्तमान टैब अंतिम है, तो आदेशों को अनदेखा कर दिया जाता है।


1

यदि यह फ़ाइल बफर है ( स्क्रैच बफ़र्स आदि के लिए काम नहीं करेगा ), आप कर सकते हैं:

  1. :let @f=@%ENTER - स्रोत विंडो में;
    • यह विशेष रजिस्टर % की सामग्री के साथ नियमित रजिस्टर की सामग्री को प्रतिस्थापित करता है , जिसमें वर्तमान फ़ाइल नाम होता है।
    • नोट: मैंने फ़ाइल के रूप में रजिस्टर f चुना है , लेकिन आप अपनी पसंद के किसी अन्य रजिस्टर का उपयोग कर सकते हैं।
    • आप सत्यापित कर सकते हैं कि रजिस्टर में सही रास्ता है: :echo @f
  2. वैकल्पिक रूप से: Ctrl-WCtrl-Q- पुरानी विंडो बंद करने के लिए;
  3. gt/ gT- लक्ष्य टैब (और विंडो) पर नेविगेट करें;
  4. Ctrl-Ws - टैब को किसी भी तरह से विभाजित करें, नई विंडो खोलने के लिए;
  5. :e␣Ctrl-RfENTER
    • नई खुली हुई खिड़की में, रजिस्टर एफ में संग्रहीत पथ से एक फ़ाइल लोड करता है ;
    • नोट: यहां: वर्ण एक नियमित स्थान को चिह्नित करता है।

महत्वपूर्ण नोट: यदि पथ रिक्त स्थान या कुछ विशेष वर्ण हैं तो अंतिम चरण सही ढंग से काम नहीं करेगा ! :-( एक वर्कअराउंड के रूप में, निम्नलिखित, थोड़ी देर के लिए रिक्त स्थान के साथ रास्तों के लिए काम करना चाहिए (हालांकि यह अभी भी कुछ अन्य वर्णों के लिए विफल हो सकता है):

  • :e␣"Ctrl-Rf"ENTER

(अर्थात, Ctrl-R, f के परिणाम को उद्धृत करते हुए )

लक्रव और इंगो-करकट के उत्तरों से प्रेरित


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