विम: विभाजन विंडो को खोए बिना बफर हटाएं


149

जब कोई बफ़र हटा दिया जाता है ("bd [elete]" कमांड), तो यह न केवल बफ़र को हटाता है, बल्कि बफ़र में मौजूद विभाजन विंडो को भी हटा देता है।

क्या बफर को हटाने / उतारने और विंडो को अलग रखने का कोई तरीका है?



इसने मेरे लिए अच्छा काम किया।
रूमपिल स्टिल्टस्किन

[यह एक DeleteCurBufferNotCloseWindow()अच्छी तरह से काम करता है और काफी पठनीय है] ( stackoverflow.com/a/44950143/3625404 )।
क्यूटीज़ी

जवाबों:



326

bp|bd # करूंगा।


विवरण: bp("बफर पिछला") हमें वर्तमान विंडो में एक अलग बफर में ले जाता है ( bnकाम करेगा, भी), तो bd #("बफर डिलीट" "वैकल्पिक फ़ाइल") उस बफर को हटा देता है जिसे हम अभी दूर ले गए थे। देखें: help bp, help bd, help alternate-file


71
आपको कोई अंदाजा नहीं है कि मैं कब से ऐसी चीज की तलाश में हूं, जो इतनी सरल हो, उसे चलाने के लिए जरूरी और पूरी स्क्रिप्ट की जरूरत न हो। मेरे VIMRC में, अब मैंने CTRL + C:nnoremap <C-c> :bp\|bd #<CR>
Cloud

11
मैं रीमैप का उपयोग करने की कोशिश कर रहा हूं nmap <silent> <leader>d :bp|bd #<CR>, लेकिन मैं प्राप्त कर रहा हूं E94: No matching buffer for #<CR>
फैबियो पेरेज़

22
बैकस्लैश को सामने रखें |(जैसे :bp\|bd)
मड

4
मुझे पता था कि मुझे इसके लिए एक प्लगइन स्थापित नहीं करना चाहिए। धन्यवाद!
आकाश अग्रवाल

2
b#|bd #अगले / पिछले के बजाय पिछले उपयोग किए गए बफर पर स्विच करेगा। हालाँकि, यह आपके पास छिपे बफ़र्स के लिए कूद जाएगा set hidden, इसलिए मैंने उससे बचने के लिए एक अधिक बुद्धिमान बीडी फ़ंक्शन बनाया।
c24w

15

आप अपने को निम्नलिखित जोड़ सकते हैं .vimrcके लिए Bdके रूप में काम करते हैं bd, लेकिन खिड़की विभाजन को बिना छुए:

command Bd bp\|bd \#

मुझे यह एक उपयोगी पूरक के रूप में मिला जिसे मड ने जवाब दिया।


ठीक वैसा ही मेरे अंदर भी है ।vimrc :)
मड

और आप 3 कमांड जोड़ सकते हैं अनलोड करने, हटाने और एक बफर को मिटा देने के लिए: कमांड! BUN bp \! बन \ # कमांड! BD bp \! Bd \ # कमांड! BW bp \ | bw \ # जो bufkill प्रदान करने के बराबर है लेकिन 700+ लाइनों के प्लगइन के बजाय vimrc में 3 पंक्तियों के साथ है!
फिवेल

3
मेरे लिए यह केवल .vimrc में इसके साथ काम करता था command! Bd bp|bd #। ऊपर `कमांड के साथ बफर बफर सूची में रखा गया है।
mljrg


3

मैं @Mud के समान कुछ करता हूं, लेकिन #बफर सूची में पिछले बफर के बजाय पिछले दृश्य बफर पर स्विच करता हूं । यहाँ मेरे में एक बंधन कुंजी है .vimrc:

nnoremap <silent> <leader>q :lclose<bar>b#<bar>bd #<CR>

स्थान विंडो बंद करें, यदि मौजूद है, तो पिछले दृश्य बफर पर स्विच करें, और फिर अंतिम स्विच किए गए बफर को बंद करें।


1

मेरी पसंद है

:sb # | bd #
:sb 1 | bd #
: <1. Recall Buffer> | <2. Delete Buffer>

ऐसा सोचो! /// <१। याद बफ़र> | <2। बफ़र हटाएँ>

:vert sb 2 | bd #
:vert sb <tab key~completed file(buffer)name> | bd #

क्यों?! 3 (+ 1) कीवर्ड याद रखना आसान है!

  1. sb विभाजित_बफ़र
  2. bd हटाएँ बफर 2 सरल 2 कीवर्ड
  3. # या बफर की संख्या
  4. ऊर्ध्वाधर uff शॉर्ट_फॉर्म वर्टिकल (स्प्लिट_बफ़र या अन्य)

कि कई अन्य कई मामलों में आसान और बहुत उपयोगी हैं!

आपका दिन शुभ हो! :)


0

मैं उपयोग करता था:

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

लेकिन मुझे कुछ ऐसे मौके मिले जहां इसने मेरी खिड़की बंद कर दी। उसके शीर्ष पर अगला या पिछला बफर वह नहीं हो सकता है जिसे आप विभाजन में प्रदर्शित करना चाहते हैं।

अब मैं यह करता हूं:

  • मैं जिस बफर पर काम करना चाहता हूं, उस पर स्विच करें
  • वैकल्पिक बफर हटाएं

nnoremap <leader>d :bd#<CR>

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