Emacs में मौजूदा एक के अलावा सभी बफर बंद करें




elisp (5)

अधिक मैन्युअल दृष्टिकोण के लिए, आप सीएक्स सीबी के साथ सभी बफर सूचीबद्ध कर सकते हैं, डी के साथ हटाने के लिए सूची में बफर चिह्नित करें, और फिर उन्हें निकालने के लिए एक्स का उपयोग करें।

मैं सूची-बफर को अधिक उन्नत ibuffer के साथ बदलने की भी सिफारिश करता हूं: (global-set-key (kbd "Cx Cb") 'ibuffer) केबीआई (global-set-key (kbd "Cx Cb") 'ibuffer) । उपरोक्त ibuffer के साथ काम करेगा, लेकिन आप यह भी कर सकते हैं:

मी (बफर को चिह्नित करें जिसे आप रखना चाहते हैं)
टी (टॉगल अंक)
डी (सभी चिह्नित बफर को मार डालो)

मैं इस स्निपेट का उपयोग इमाक्स विकी से भी करता हूं, जो इस मैन्युअल दृष्टिकोण को आगे बढ़ाएगा:

;; Ensure ibuffer opens with point at the current buffer's entry.
(defadvice ibuffer
  (around ibuffer-point-to-most-recent) ()
  "Open ibuffer with cursor pointed to most recent buffer name."
  (let ((recent-buffer-name (buffer-name)))
    ad-do-it
    (ibuffer-jump-to-buffer recent-buffer-name)))
(ad-activate 'ibuffer)

मैं Emacs में वर्तमान बफर के अलावा सभी को कैसे बंद कर सकता हूं? आधुनिक वेब ब्राउज़र में "अन्य टैब बंद करें" सुविधा के समान?


ऐसा करने के लिए सीधे emacs में कोई रास्ता नहीं है।

ऐसा करने के लिए आप एक समारोह लिख सकते हैं। निम्नलिखित सभी बफर बंद कर देंगे:

(defun close-all-buffers ()
  (interactive)
  (mapc 'kill-buffer (buffer-list)))

एक अंतर्निहित कमांड एम - एक्स kill-some-buffers (मैं 24.3.50 का उपयोग कर रहा हूं) मेरे अगले चरण में (टर्मिनल में कोशिश नहीं की गई है लेकिन यह सुनिश्चित है कि यह समान है) तो आप कौन से बफर को मारने के लिए स्वीकृति दे सकते हैं।


EmacsWiki से: किलिंग बफर :

(defun kill-other-buffers ()
    "Kill all other buffers."
    (interactive)
    (mapc 'kill-buffer 
          (delq (current-buffer) 
                (remove-if-not 'buffer-file-name (buffer-list)))))

संपादित करें : गिल्स से फीडबैक के साथ अपडेट किया गया


मैंने यह समाधान सबसे सरल पाया। यह वर्तमान बफर को छोड़कर हर बफर को हटा देता है। आपको यह कोड अपनी .emacs फ़ाइल में जोड़ना होगा

(defun kill-other-buffers ()
      "Kill all other buffers."
      (interactive)
      (mapc 'kill-buffer (delq (current-buffer) (buffer-list))))

बेशक, आप इसे एमएक्स kill-other-buffers आरईटी के साथ उपयोग करते हैं या आप निम्न कोड को .emacs फ़ाइल में पेस्ट करते हैं और फिर सीएक्स सीबी दबाएं

(global-set-key (kbd "C-x C-b") 'kill-other-buffers)




elisp