সমস্ত ডায়ার্ড বাফার বন্ধ করুন


23

কখনও কখনও আমার বাফার তালিকায় 10+ ডায়ার্ড উইন্ডো থাকে এবং আমি buffer-menuনিজেই চিহ্নিত করে এবং সেগুলি সমস্তকে হত্যা করে। সমস্ত উন্মুক্ত ডায়ার্ড উইন্ডো বন্ধ করার কোন দ্রুত উপায় আছে?


আমি যে উত্তরটি সরাসরি প্রশ্নের উত্তর দিয়েছি তা আমি গ্রহণ করেছি। যাইহোক, আমি এর পরিবর্তে আউন্স প্রতিরোধের প্রয়োগ শুরু করেছি: emacs.stackexchange.com/a/1041/93
নিস্পিও

উত্তর:


32

আপনি নিম্নলিখিত করতে পারেন:

M-x ibuffer

* / ক্লান্ত মোডে বাফারগুলি চিহ্নিত করতে।

D তাদের মুছতে।


1
আমি এর আগে আইফুফারের কথা কখনও শুনিনি। আমি স্পষ্টভাবে ম্যাপিং হতে হবে C-x C-bকরার ibuffer
নিসপিও

আপনি সমস্ত চিহ্নিত করতে t( dired-toggle-marks) টিপুন ( যদি কোনওটি আগে চিহ্নিত না করা হত) can
caisah

@caisah dired-toggle-marksনাম dired কমান্ড। টিপলে tহবে ibuffer সমস্ত চিহ্ন, কিন্তু সাধারণত dired বাফার দলে ভারি হওয়া অ dired বাফার টগল এছাড়াও, তাই টগল করা প্রায়ই এই প্রেক্ষাপটে অর্থে দেখা যায় না।
নিসপিও

@ স্প্যানিও আপনি ঠিক বলেছেন আমি কেন জানি না, কিন্তু আমি ভাবছিলাম সব বাফার হয় dired ...
caisah

1
দ্রষ্টব্য: যখন কোনও ডায়ার্ড বাফার না থাকে তখন এটি সঠিকভাবে কাজ করে না, কারণ ডি ডায়ার্ড বাফারগুলিতে প্রয়োগ করা হবে না, তবে তালিকার প্রথম বাফারের ক্ষেত্রে হবে।
ড্যানিয়েল কুলম্যান

10

সমস্ত diredবাফারকে মেরে ফাংশন যুক্ত করার পরিবর্তে , আমি আপনাকে ফিল্টার গ্রুপগুলির সুবিধা নেওয়ার পরামর্শ দিচ্ছি ibuffer, এটি আপনাকে অনেক শর্তে বাফার গ্রুপ করতে দেয়।

ফিল্টার গ্রুপ সেট করার জন্য এখানে একটি উদাহরণ রয়েছে:

(setq-default ibuffer-saved-filter-groups
              `(("Default"
                 ;; I create a group call Dired, which contains all buffer in dired-mode
                 ("Dired" (mode . dired-mode))
                 ("Temporary" (name . "\*.*\*"))
                 )))

তারপর C-x C-bখোলা ibufferজানালা, আপনি ভালো কিছু দেখতে পারেন:

example1

কার্সারটিকে [ Dired ](সহ M-p, M-n) এ সরান , তারপরে dমুছে ফেলা হিসাবে চিহ্নিত করতে টিপুন

example2

তারপরে xমৃত্যুদন্ড কার্যকর করতে টিপুন ।

আমি এই উপায়ে পছন্দ করি কারণ নতুন ফাংশনের সাথে কীভাবে আমার কীটি আবদ্ধ করা উচিত সে সম্পর্কে আমার চিন্তা করার দরকার নেই এবং আমার বাফারগুলি আরও সুসংহত।


আমি যখন ibufferআপনার কোডটি মূল্যায়নের পরে প্রথম চালু করেছি তখন ফিল্টার গোষ্ঠীগুলি আমার জন্য প্রদর্শন করে না । গ্রুপগুলি পেতে আমাকে আঘাত করতে হয়েছিল / R(আবদ্ধ ibuffer-switch-to-saved-filter-groups)।
je ই

(ibuffer-switch-to-saved-filter-groups "Default")আপনি এই লাইন কোডটিকে আইফুফ হুকের সাথে যুক্ত করতে পারেন, ফিল্টার গ্রুপের নামটি যদি তা না হয় তবে তা পরিবর্তন করা উচিতDefault
রাঙ্গি লিন

1
হ্যাঁ, এটাই আমি শেষ করেছিলাম। আপনার উত্তর পড়ার আগে ফিল্টার গ্রুপগুলি সম্পর্কে জানতেন না, তাদের উল্লেখ করার জন্য ধন্যবাদ;)
je ই

10

আপনি কি এক পর্যায়ে সমস্ত চেয়েছিলেন বলে আপনার অনেকগুলি ডায়ার্ড বাফার রয়েছে ? IOW, আপনি কি তাদের প্রত্যেককে আলাদা আলাদা বাফার হিসাবে তৈরি করতে চান ?

যদি তা না হয় তবে সমাধানটি সহজ: ডায়ার্ডকেRET কোনও ডিরেক্টরি নাম খোলার জন্য ডায়ার্ডে খোলার সময় কোনও বিদ্যমান ডায়ার্ড বাফার পুনরায় ব্যবহার করতে বলুন

এটি কীভাবে করা যায় তা এখানে:

  1. লোড লাইব্রেরিযুক্ত + ( dired+.el):

    (require 'dired+)
    
  2. ডায়ার্ডকে ডায়ার্ড বাফারগুলি পুনরায় ব্যবহার করতে বলুন:

    (diredp-toggle-find-file-reuse-dir 1)
    

এর প্রভাবটি হ'ল আপনি যখন RETডায়ার্ডে কোনও ডিরেক্টরিতে হিট (বা মাউস ক্লিক করেন) find-alternate-fileব্যবহার করেন, তাই মূল ডায়ার্ড বাফারটি নতুন দ্বারা প্রতিস্থাপন (মুছে ফেলা) করা হবে।

আপনি এই আচরণটি যে কোনও সময় টগল করতে পারেন, শুকিয়ে যাওয়া C-M-R(ওরফে C-M-S-r) ব্যবহার করে ।


আমি এখনই এটি সমাধান করেছি। আমি প্রথমে 20 টি ওপেন ডায়ার্ড বাফার চাইনি। এটি প্রস্তাব করার জন্য (এবং এটি তৈরি করার জন্য) ধন্যবাদ
নিস্পিও

লিঙ্কগুলি মারা গেছে, একটি 404 পেয়েছে: (
জেলফির কাল্টসাহেল

1
@ জেলফির: মাথা উঁচু করার জন্য ধন্যবাদ। এখনই ঠিক আছে। (ইমাসস উইকি সাধারণত ইউআরএলগুলি পরিবর্তন করেছে, সুতরাং এর মতো পুরানো পোস্টগুলি ভাঙা লিঙ্ক পেয়েছে))
ড্রইউ

8

এরকম কিছু (কিছুটা স্ক্রোল)?

(defun kill-dired-buffers ()
     (interactive)
     (mapc (lambda (buffer) 
           (when (eq 'dired-mode (buffer-local-value 'major-mode buffer)) 
             (kill-buffer buffer))) 
         (buffer-list)))

5

আপনি এটি ব্যবহার করতে পারেন helm-mini:

  • চালান M-x helm-mini
  • প্রম্পটে টাইপ করুন: *Di(এর জন্য আংশিক শব্দ Dired, আরও প্রবেশ করার প্রয়োজন নেই)। আপনি টাইপ করার সাথে সাথে বাফারগুলি ক্রমবর্ধমান সংকীর্ণ হয়। এখন, কেবল Diredবাফার বাকি আছে। M-aসমস্ত চিহ্নিত করতে টিপুন ।
  • প্রেস TABকর্ম মেনু টিপুন স্যুইচ করতে Kকর্ম নির্বাচন করতে Kill buffer(s)
  • RETক্রিয়াটি কার্যকর করতে টিপুন ।

এর সাথে ভাল জিনিসটি helm-miniহ'ল এটি সাধারণ ইমাকগুলি প্রতিস্থাপন করতে পারে C-x b, সুতরাং আপনাকে দুটি কী বাইন্ডিং ব্যবহার করতে হবে না, একটি বাফার সুইচিংয়ের জন্য এবং একটি আসল বাফার পরিচালকের জন্য। helm-miniসব-মধ্যে-এক। আমার হেলম-মিনি গাইডে আরও পড়ুন ।

helm-miniএছাড়াও ঝাপসা ম্যাচ বাফার করতে পারেন এবং সঙ্গে চিহ্নিত করে খোলা একাধিক বাফার করার অনুমতি দেয় C-SPCঅথবা M-a(জন্য দাঁড়ানো এম সিন্দুকটি একটি করব)। আপনি @কোনও প্যাটার্নের আগে সংযুক্ত করে নির্দিষ্ট স্ট্রিং ধারণ করে বাফারে সংকীর্ণও করতে পারেন , উদাহরণস্বরূপ, @testকেবলমাত্র বাফারগুলিতে "টেস্ট" স্ট্রিং থাকে তা নির্বাচন করুন।


1

আমি এই জাতীয় কিছু চেষ্টা করব:

(require 'dash)

(defun my-kill-dired-buffers ()
  (interactive)
  (kill-some-buffers
   (-filter (lambda (buffer)
              (save-excursion
                (set-buffer buffer)
                (eq major-mode 'dired-mode)))
            (buffer-list))))

1
আমি বিশ্বাস করি মেলপা থেকে -filterপ্রয়োজনীয় dash.el। আপনার সম্ভবত এটি প্রয়োজন হিসাবে তালিকাভুক্ত করা উচিত।
বংশী

1

আপনি যা খুঁজছেন তা হ'ল স্বয়ংক্রিয়ভাবে অবাঞ্ছিত বাফারগুলি পরিষ্কার করার উপায়, এক্ষেত্রে আপনার যাচাই করা উচিত midnight.el, যা ইমাসের অংশ।

তবে সাধারণত বলতে গেলে, ibufferপ্রচুর পরিমাণে বাফারে কাজ করা খুব সহজ করে তোলে, যেমনটি ফ্রান্সিসকো প্রস্তাব করেছিল।


1

আপনি যদি আইকিকেল ব্যবহার করেন তবে আপনি C-x kসমস্ত ডায়ার্ড বাফার - বা যে কোনও প্রদত্ত মোডে সমস্ত বাফারকে হত্যা করতে পারেন ।

আঘাত করার পরে C-x k, C-x M +একটি নির্দিষ্ট মোডের সাথে কেবল বাফারগুলি রাখতে ব্যবহার করুন। TABমোডগুলি দেখতে হিট করুন এবং চয়ন করুন dired-mode। তারপরে সেই মোডের সাহায্যে সমস্ত বাফারকে C-!মেরে ফেলুন।

C-x k C-x M + dired-mode C-!
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.