ইমাসে বর্তমানের পাশাপাশি সমস্ত বাফার বন্ধ করুন


92

আমি ইমাক্সের বর্তমান বাফার ব্যতীত কীভাবে সমস্ত বন্ধ করব? আধুনিক ওয়েব ব্রাউজারগুলিতে "অন্যান্য ট্যাবগুলি বন্ধ করুন" বৈশিষ্ট্যের মতো?

উত্তর:


100

আরও ম্যানুয়াল পদ্ধতির জন্য, আপনি সমস্ত বাফারগুলি তালিকাভুক্ত করতে পারেন C-x C-b, মুছে ফেলার জন্য তালিকায় বাফারগুলি চিহ্নিত করতে পারেন এবং সেগুলি মুছে ফেলার জন্য dব্যবহার xকরতে পারেন।

আমিও আরো উন্নত ibuffer সঙ্গে প্রতিস্থাপন তালিকা-বাফার সুপারিশ: (global-set-key (kbd "C-x C-b") 'ibuffer)। উপরের আইবুফারের সাথে কাজ করবে তবে আপনি এটিও করতে পারেন:

m(আপনি যে বাফারটি রাখতে চান তা চিহ্নিত করুন)
t(টগল চিহ্ন)
D(সমস্ত চিহ্নিত বাফারকে হত্যা করুন)

আমি ইমাস উইকি থেকে এই স্নিপেটটিও ব্যবহার করি, যা এই ম্যানুয়াল পদ্ধতির আরও প্রবাহিত করবে:

;; 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)

কিভাবে থেকে ফিরে আসতে পারি ibuffer? @phils
Alper

4
আমি নিশ্চিত না আপনি কি জিজ্ঞাসা করছেন, তবে সম্ভবত q? কী- C-h mবাইন্ডিংগুলি শিখতে যেমন অন্য কোনও মোডের মতো ব্যবহার করুন।
ফিল্ডস

53

ইমাকস উইকি থেকে : কিলিং বাফারস :

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

সম্পাদনা : গিলসের প্রতিক্রিয়া সহ আপডেট হয়েছে


4
কেন ডেয়ারড বাফারকে হত্যা করা হচ্ছে না? আমি
এটিকেও

ডায়ার্ড বাফার সেট করে না buffer-file-nameএবং এইভাবে remove-if-notউপরের উদাহরণটিতে কলটি ডায়ার্ড বাফারকে পাশাপাশি সংরক্ষণ করবে (পাশাপাশি স্ক্র্যাচ বাফার, টার্ম বাফার, সহায়তা বাফার, ইত্যাদি, কোনও ফাইল ভিজিট না করে)। আমি কোনও সহজ পরীক্ষার কথা ভাবতে পারি না যা ফাইল বাফার এবং ডায়ারড বাফার উভয়কেই বন্ধ করে দেবে, আপনার মূলত ডায়ার্ড বাফারগুলির জন্য আলাদা টেস্টের সাথে ম্যাপকটির পুরো দ্বিতীয় অনুরোধ প্রয়োজন।
রব্রু

(defun kill-other-buffers () "Kill all other buffers." (interactive) (mapc 'kill-buffer (delq (current-buffer) (remove-if-not '(lambda (x) (or (buffer-file-name x) (eq 'dired-mode (buffer-local-value 'major-mode x)))) (buffer-list)))))
ডায়ার্ড বাফারদের

এই ভিডিওতে দেখে মনে হচ্ছে লোকটি এটি করতে সক্ষম। তিনি জিএনইউ বাফার এবং অন্যান্যদের বন্ধ করার সাথে সাথে একটি নতুন স্লিম বাফার খুলুন। আপনার কী ধারণা আছে যে সে কীভাবে তা করে? youtube.com/watch?v=BKFcznZ28BE&t=310s
ম্যাডফিসিসিস্ট

প্রতিস্থাপন করা হচ্ছে cl-remove-if-notসঙ্গে remove-if-notকাজ কিন্তু এই হত্যা করা হবে না *helm..বাফার
Alper

21

এটি করার জন্য সরাসরি ইমাসগুলিতে কোনও উপায় নেই।

এটি করার জন্য আপনি একটি ফাংশন লিখতে পারেন। নিম্নলিখিত সমস্ত বাফার বন্ধ করবে:

(ক্লোজ-অল-বাফারদের ডিফুন করুন)
  (ইন্টারেক্টিভ)
  (ম্যাপক 'কিল-বাফার (বাফার-তালিকা)))

4
আহ, তবে এটি সমস্ত বাফার বন্ধ করবে ।
শ্রীধর রত্নাকুমার

(delete (current-buffer) (buffer-list))আপনাকে এমন একটি বাফার তালিকা দেওয়া উচিত যা আপনি kill-bufferজুড়ে ম্যাপ করতে পারেন এবং বর্তমান বাফারটিকে হত্যা করা এড়াতে পারেন ।
নিকড

16

একটি বিল্ট ইন কমান্ড রয়েছে m- x kill-some-buffers(আমি 24.3.50 ব্যবহার করছি) আমার নেক্সস্টেপ গুইতে (টার্মিনালে চেষ্টা করা হয়নি তবে এটি অনুরূপ নিশ্চিত) আপনি কোন বাফারকে হত্যা করতে পারবেন তা আপনি অনুমোদন করতে পারেন।


4
আপনার 1000+ বাফার লোড হওয়ার পরে এটি বিশেষত কার্যকর।
ocodo

11
 (defun only-current-buffer () 
   (interactive)
   (let ((tobe-killed (cdr (buffer-list (current-buffer)))))
     (while tobe-killed
       (kill-buffer (car tobe-killed))
       (setq tobe-killed (cdr tobe-killed)))))

এটি আপনার প্রত্যাশা মতো কাজ করে।

এবং @ স্টার্কির উত্তর পড়ার পরে, আমি মনে করি এটি আরও ভাল হবে:

(defun only-current-buffer () 
  (interactive)                                                                   
    (mapc 'kill-buffer (cdr (buffer-list (current-buffer)))))

(বাফার-তালিকা (বর্তমান-বাফার)) তালিকার শীর্ষে বর্তমান বাফার সহ সমস্ত বিদ্যমান বাফার যুক্ত একটি তালিকা ফিরিয়ে দেবে।

এটি স্ট্যাকওভারফ্লোতে আমার প্রথম উত্তর। আশা করি এটা সাহায্য করবে :)


4
এবং এই আমার বন্ধুরা হ'ল কীভাবে লোকেদের মতামতগুলি ভাগ করে নেওয়ার মাধ্যমে উত্সাহী সমাধানগুলি উত্পন্ন হয়
ক্রিস ক্লার্ক

আমি জানি না buffer-listকয়েক বছর ধরে চশমা বদলেছে কি না, তবে (buffer-list (current-buffer))উপরের উত্তর হিসাবে কাজ করা কার্যকর হবে না । কি C-h f buffer-list RETবর্তমান বৈশিষ্ট জন্য।
নিকড

4

আমি এই সমাধানটি সবচেয়ে সহজ বলে খুঁজে পেয়েছি। এটি বর্তমান ব্যতীত প্রতিটি বাফার মুছে দেয়। আপনাকে এই .emacsফাইলটি আপনার ফাইলে যুক্ত করতে হবে

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

অবশ্যই, তারপরে আপনি এটি ব্যবহার করুন M-x kill-other-buffers RET বা আপনি .emacsফাইলটিতেও নীচের কোডটি আটকে দিন এবং তারপরে কেবল টিপুনC-xC-b

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

1

আমি কয়েক মাস ধরে ক্রাক্স-কিল-অন্যান্য-বাফার ব্যবহার করেছি।

তবে আমি চাই ডায়ার্ড বাফারগুলিও মুছে ফেলা হোক। @ ইউজ এবং @ ওয়েঞ্জুন.আইনের উত্তরগুলি এটি সমাধান করে। তবে এটি বিশেষ বাফারগুলি মুছে ফেলবে (উদাঃ * গিট-শংসাপত্র-ক্যাশে - ডেমন *, * স্ক্র্যাচ *, হেলম অপারেশন এবং অন্যান্য)। সুতরাং আমি এই (বর্তমান) সমাধান নিয়ে এসেছি।

(defun aza-kill-other-buffers ()
  "Kill all buffers but current buffer and special buffers"
  (interactive)
  (dolist (buffer (delq (current-buffer) (buffer-list)))
    (let ((name (buffer-name buffer)))
      (when (and name (not (string-equal name ""))
             (/= (aref name 0) ?\s)
             (string-match "^[^\*]" name))
        (funcall 'kill-buffer buffer)))))

কিল-ম্যাচিং-বাফারগুলি থেকে অনুপ্রাণিত । আপনি চাইলে conditionবাদ দিতে অন্য বাফার-নেমে আরও যোগ করতে পারেন।

আশা করি এটা সাহায্য করবে :)


দেখুন এই আমার উন্নত সমাধানের জন্য।
আজমসা

0

আপনি এটির মতোও পছন্দ করতে পারেন - বর্তমানের ব্যতীত সমস্ত বাফারকে মেরে ফেলুন, * বার্তাগুলি * এবং * স্ক্র্যাচ * (যা সহজেই ব্যবহৃত হয়, আমি তাদেরকে "টুলকিট" বলি) সাথে সাথে রিডান্ট্যান্ট উইন্ডোজগুলিও বন্ধ করে রাখুন এবং আপনার কোন উইন্ডোটি বর্তমান বাফার

(defun my/kill-all-buffers-except-toolbox ()
  "Kill all buffers except current one and toolkit (*Messages*, *scratch*). Close other windows."
  (interactive)
  (mapc 'kill-buffer (remove-if
                       (lambda (x)
                         (or
                           (string-equal (buffer-name) (buffer-name x))
                           (string-equal "*Messages*" (buffer-name x))
                           (string-equal "*scratch*" (buffer-name x))))
                       (buffer-list)))
  (delete-other-windows))

(string-equal (buffer-name) (buffer-name x))(eq x (current-buffer))ঠিক যেমন কম দক্ষ হিসাবে একই । অবশিষ্ট orসরলীকৃত করা যেতে পারে(member (buffer-name x) '("*Messages*" "*scratch*"))
স্টিফান

-4

4
আমি মনে করি যে আপনি নীচে ভোট পেয়েছেন তা হ'ল ওপি উইন্ডোজ নয়, অন্য বাফারগুলি বন্ধ করতে বলছে । ইমাস টার্মিনোলজিটি কিছুটা বিভ্রান্ত হতে পারে।
ফেনশাউন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.