আমি ইমাক্সের বর্তমান বাফার ব্যতীত কীভাবে সমস্ত বন্ধ করব? আধুনিক ওয়েব ব্রাউজারগুলিতে "অন্যান্য ট্যাবগুলি বন্ধ করুন" বৈশিষ্ট্যের মতো?
আমি ইমাক্সের বর্তমান বাফার ব্যতীত কীভাবে সমস্ত বন্ধ করব? আধুনিক ওয়েব ব্রাউজারগুলিতে "অন্যান্য ট্যাবগুলি বন্ধ করুন" বৈশিষ্ট্যের মতো?
উত্তর:
আরও ম্যানুয়াল পদ্ধতির জন্য, আপনি সমস্ত বাফারগুলি তালিকাভুক্ত করতে পারেন 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)
q
? কী- C-h m
বাইন্ডিংগুলি শিখতে যেমন অন্য কোনও মোডের মতো ব্যবহার করুন।
ইমাকস উইকি থেকে : কিলিং বাফারস :
(defun kill-other-buffers ()
"Kill all other buffers."
(interactive)
(mapc 'kill-buffer
(delq (current-buffer)
(remove-if-not 'buffer-file-name (buffer-list)))))
সম্পাদনা : গিলসের প্রতিক্রিয়া সহ আপডেট হয়েছে
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)))))
cl-remove-if-not
সঙ্গে remove-if-not
কাজ কিন্তু এই হত্যা করা হবে না *helm..
বাফার
এটি করার জন্য সরাসরি ইমাসগুলিতে কোনও উপায় নেই।
এটি করার জন্য আপনি একটি ফাংশন লিখতে পারেন। নিম্নলিখিত সমস্ত বাফার বন্ধ করবে:
(ক্লোজ-অল-বাফারদের ডিফুন করুন) (ইন্টারেক্টিভ) (ম্যাপক 'কিল-বাফার (বাফার-তালিকা)))
(delete (current-buffer) (buffer-list))
আপনাকে এমন একটি বাফার তালিকা দেওয়া উচিত যা আপনি kill-buffer
জুড়ে ম্যাপ করতে পারেন এবং বর্তমান বাফারটিকে হত্যা করা এড়াতে পারেন ।
(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)))))
(বাফার-তালিকা (বর্তমান-বাফার)) তালিকার শীর্ষে বর্তমান বাফার সহ সমস্ত বিদ্যমান বাফার যুক্ত একটি তালিকা ফিরিয়ে দেবে।
এটি স্ট্যাকওভারফ্লোতে আমার প্রথম উত্তর। আশা করি এটা সাহায্য করবে :)
buffer-list
কয়েক বছর ধরে চশমা বদলেছে কি না, তবে (buffer-list (current-buffer))
উপরের উত্তর হিসাবে কাজ করা কার্যকর হবে না । কি C-h f buffer-list RET
বর্তমান বৈশিষ্ট জন্য।
আমি এই সমাধানটি সবচেয়ে সহজ বলে খুঁজে পেয়েছি। এটি বর্তমান ব্যতীত প্রতিটি বাফার মুছে দেয়। আপনাকে এই .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)
আমি কয়েক মাস ধরে ক্রাক্স-কিল-অন্যান্য-বাফার ব্যবহার করেছি।
তবে আমি চাই ডায়ার্ড বাফারগুলিও মুছে ফেলা হোক। @ ইউজ এবং @ ওয়েঞ্জুন.আইনের উত্তরগুলি এটি সমাধান করে। তবে এটি বিশেষ বাফারগুলি মুছে ফেলবে (উদাঃ * গিট-শংসাপত্র-ক্যাশে - ডেমন *, * স্ক্র্যাচ *, হেলম অপারেশন এবং অন্যান্য)। সুতরাং আমি এই (বর্তমান) সমাধান নিয়ে এসেছি।
(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
বাদ দিতে অন্য বাফার-নেমে আরও যোগ করতে পারেন।
আশা করি এটা সাহায্য করবে :)
আপনি এটির মতোও পছন্দ করতে পারেন - বর্তমানের ব্যতীত সমস্ত বাফারকে মেরে ফেলুন, * বার্তাগুলি * এবং * স্ক্র্যাচ * (যা সহজেই ব্যবহৃত হয়, আমি তাদেরকে "টুলকিট" বলি) সাথে সাথে রিডান্ট্যান্ট উইন্ডোজগুলিও বন্ধ করে রাখুন এবং আপনার কোন উইন্ডোটি বর্তমান বাফার
(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*"))
এটাই তুমি চাও:
C-x 1
উত্স: https://blasphemousBS.wordpress.com/2007/05/04/learning-emacs-part-4-buffers-windows-and-frames/
ibuffer
? @phils