खिड़की बंद किए बिना बफर कैसे बंद करें?


23

मैं आमतौर पर कुछ खिड़कियां खोलता हूं और कुछ बफर्स ​​को खुला रखता हूं। चूँकि मेरे बफर की खोज में त्वरित शॉर्टकट्स का उपयोग करना है :bnऔर :bp, मैं अपने बफर सर्फिंग से विचलित बफ़र्स को बंद करना चाहता हूँ।

लेकिन दर्द है, जारी करने :bdऔर :bwपरिणाम के रूप में अच्छी तरह से खिड़की बंद करने के मामले में, मैं कई लोगों को खुला है। मैं एक बफ़र को कैसे बंद (डिलीट) करूं और विंडोज़ को बरकरार रखूं?

@ पेठ के उत्तर से प्रेरित समाधान

:command! BW :bn|:bd#

यह आसान है। केवल एक बफर ओपन के साथ अच्छी तरह से काम नहीं करता है (जिस तरह से मैं फाइलें खोलता हूं उसके आधार पर मुझे अलग व्यवहार मिलता है) लेकिन यह एक बड़ा मुद्दा नहीं है। :)

जवाबों:


12

यह एक दर्द हो सकता है, इस सवाल को #vim(फ्रीनोड) पर भी उठाया जाता है, और भी।

कुछ लोग बफ़र्स को हटाने और :b partial<Tab>इसके बजाय स्विच करने की सलाह देते हैं :bn, जो काम करता है, लेकिन ऐसा नहीं है जो आप पूछ रहे हैं।

सबसे अच्छा तरीका मुझे यह पता है कि एक और बफर पर स्विच करना है और फिर :bd#, जिसे आप मैप कर सकते हैं, बिल्कुल।

विम विकिया पर खिड़की बंद किए बिना एक बफर हटाना भी देखें ।


स्क्रिप्ट एक ऐसा समाधान है जिसे मैं स्वीकार करने के लिए तैयार हूं कि अगर कोई आधिकारिक तरीका नहीं है। :)
unperson325680

21

मैंने इसे थोड़ा गड़बड़ कर दिया और आखिरकार साथ आया:

:bp | sp | bn | bd

यहां कुंजी मानचित्रण के लिए प्रतिलिपि / पेस्ट संस्करण दिया गया है:

:bp<bar>sp<bar>bn<bar>bd<CR>

या आपके .vimrc (Bd के साथ कॉल) के लिए एक कमांड:

कमांड बीडी बीपी | सपा | bn | bd

मैंने इसे एक उचित सा परीक्षण किया है और यह विभिन्न परिस्थितियों में लगातार काम करता है। अंतिम बफर पर उपयोग किए जाने पर यह आपको एक नए रिक्त बफर के साथ छोड़ देगा।


3
मैं अपना विभाजन खो देता हूं यदि मैं दोनों विंडो में खुले बफर को बंद करता हूं, जैसे कि आखिरी बफर। खिड़की बंद करने के बिना बीडी करने के लिए विकिया लिपियों की तुलना में सरल होने के लिए +1 ।
लीफ कार्लसन

मैं vim-bbye का उपयोग कर रहा था लेकिन आपका उत्तर बहुत सरल है और किसी भी स्क्रिप्ट पर निर्भर नहीं करता है। धन्यवाद।
एंड्रयू-डफ्रेसने

4

एक विंडो एक बफर में एक व्यूपोर्ट है। (देखें :help window।) आपके पास संबंधित बफर के बिना एक खिड़की नहीं हो सकती है। आप एक आदेश का उपयोग कर सकते हैं जैसे :enewकि वर्तमान विंडो सामग्री को खाली बफर के साथ बदलना, हालांकि।


मैं उम्मीद कर रहा था कि एक बफर हटाने के बाद, विम दूसरे बफर में जा सकता है, या यदि आवश्यक हो तो एक नया खोल सकता है।
unperson325680

@progo, जिसके लिए कुछ स्क्रिप्टिंग अर्थात प्लगइन या एक साधारण मैपिंग की आवश्यकता होगी।
क्लिंट पच

2

bufkill.vim प्लगइन के रूप में अच्छी तरह से काम करता है। मैं इसे जोड़ा कार्यक्षमता और बारीकियों के लिए vim-command-w के साथ उपयोग करना पसंद करता हूं (जैसे कि यह अंतिम बफ़र है या यदि यह अंतिम बफ़र / स्प्लिट है, तो अंतिम vim बंद हो जाएगा)।


2

यहाँ एक और उपाय है:

map <C-W>o <C-W>n<C-W><C-W><C-W>c

Ctrl + W टाइप करना फिर o चुपचाप एक नई विंडो बनाएगा और पुरानी विंडो को बंद कर देगा। कर्सर को नई विंडो में छोड़ दिया जाता है। कई सकारात्मक प्रभाव हैं:

  1. आपके मूल विभाजन आयाम संरक्षित हैं।
  2. नए बंटवारे में एक खाली बफर लोड किया जाता है।
  3. मूल बफर अभी भी भरा हुआ है, उपयोग करें: इसे सूचीबद्ध करने के लिए बफ़र्स।
  4. Ctrl + o कर्सर को अपने मूल स्थान पर ले जाता है पुराने बफर में आपको वापस जाने की आवश्यकता होनी चाहिए।
  5. अच्छी तरह से काम करता है, भले ही केवल एक खिड़की भरी हुई हो।

1

मुझे लगता है कि समस्या यह है कि ज्यादातर लोग vim बफर और विंडो की उम्मीद करते हैं कि वे कुछ ऐसे हैं जो वे नहीं हैं।

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

मेरा समाधान विम के दो उदाहरणों को खोलना है, ताकि आप जिस प्रकार की विम विंडो चाहते हैं, वह हो सके। यह WMs को टाइल करने पर सबसे अच्छा काम करता है।


1

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

उसके बाद मैं मेनू से अन्य फ़ाइल खोल सकता हूं।

मेरे कदम हैं:

:Vex

ctrl + w + w

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