अवांछित बफ़र्स को खोलने से रोकें


18

मैं अपने दैनिक जावास्क्रिप्ट संपादन के लिए emacs का उपयोग कर रहा हूं, बफ़र्स के बीच स्विच करने के लिए मैं Cx LEFT और Cx RIGHT का उपयोग करता हूं और मैं इसके साथ ठीक हूं (भले ही मुझे उस फ़ाइल का मार्ग जानना मुश्किल हो रहा हो जिसे मैं संशोधित कर रहा हूं)।

मेरी समस्याएं:

  1. स्टार्टअप पर मैंने हमेशा *scratch*और *Messages*खोला है, मैंने सोचा कि (kill-buffer "*scratch*")मेरे .emacs में डालने से समस्या हल हो जाएगी, लेकिन ऐसा नहीं है, क्या आपके पास कोई सुझाव है?

  2. जब मैं फाइलें खोलता हूं तो मैं हमेशा TAB स्वतः पूर्ण करता हूं, इसलिए हर बार जब मैं एक नया *Messages*बफर बना रहा होता हूं, तो मैं इसे पूरा करने के लिए विकल्पों को कैसे रोक सकता हूं, या बेहतर कैसे बना सकता हूं, मैं इसे बनाने के बाद इसे कैसे मार सकता हूं। मेरी पसंद बना?

अपनी राय बताएं अगर आपको लगता है कि मैं कुछ ऐसा कर रहा हूं जो मुझे "नेविगेट करने का तरीका" नहीं होना चाहिए जैसा कि मैंने शीर्ष पर कहा था।


1
जैसा कि ट्रे ने सुझाव दिया है कि आप बफ़र्स स्विच करने के अन्य तरीकों का पता लगाना चाहते हैं। यदि आप एक अन्य विधि का विकल्प चुनते हैं जो अनुक्रमिक नहीं है, तो आप तुरंत वांछित बफ़र पर जा सकते हैं, इसलिए यह कोई फर्क नहीं पड़ता कि अवांछित बफ़र बफर सूची में हैं या नहीं। मैं खुद को iswitchb का उपयोग करता हूं।
टॉम

जवाबों:


23

इसने मुझे पागल कर दिया .. जब तक मैंने इसे ठीक नहीं किया।

अब आपके प्रवाह के साथ पेंच करने के लिए कोई खरोंच , संदेश या पूर्णता नहीं है । का आनंद लें!

इसे अपने .emacs में रखें:

;; Makes *scratch* empty.
(setq initial-scratch-message "")

;; Removes *scratch* from buffer after the mode has been set.
(defun remove-scratch-buffer ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*")))
(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer)

;; Removes *messages* from the buffer.
(setq-default message-log-max nil)
(kill-buffer "*Messages*")

;; Removes *Completions* from buffer after you've opened a file.
(add-hook 'minibuffer-exit-hook
      '(lambda ()
         (let ((buffer "*Completions*"))
           (and (get-buffer buffer)
                (kill-buffer buffer)))))

;; Don't show *Buffer list* when opening multiple files at the same time.
(setq inhibit-startup-buffer-menu t)

;; Show only one active window when opening multiple files at the same time.
(add-hook 'window-setup-hook 'delete-other-windows)

बक्शीश:

;; No more typing the whole yes or no. Just y or n will do.
(fset 'yes-or-no-p 'y-or-n-p)

1
इसके लिए आपका बहुत-बहुत धन्यवाद, काश मैं आपको और अधिक प्रतिनिधि दे पाता।
अल्बर्टो ज़क्काग्नी

आपका स्वागत है! : डी
ओले

2
क्या यह इस (if (get-buffer "*Messages*") (kill-buffer "*Messages*"))मामले में करने के लिए समझ में नहीं आता है कि एक विन्यास को पुनः लोड करता है? विशुद्ध रूप से आप के अन्य मैक्रो से प्रेरित है।
सिमोन ने 'मोनिका' शाइन

2
मुझे एहसास नहीं था कि इन बफ़र्स ने मुझे कितना परेशान किया जब तक कि मैंने उनसे छुटकारा नहीं पाया।
ऑटोमेटन

इसने Emacs को क्रैश कर दिया
alper

6

खैर ... यह आंशिक रूप से Emacs के काम करने का तरीका है, लेकिन ऐसी चीजें हैं जो आप सामान्य रूप से स्विच करने में मदद कर सकते हैं।

सबसे पहले, Emacs के पास कम से कम एक बफर होना चाहिए। इसलिए, भले ही आप छुटकारा पाना चाहते थे *scratch*और *Messages*आप अभी तक एक और बफर के साथ रह गए थे जो आप नहीं चाहते थे (या आपको वह बिंदु मिलेगा जहां Emacs ने आपके अंतिम kill-bufferअनुरोध को अनदेखा कर दिया था क्योंकि यह उस बफर को फिर से बना रहा था) बी / सी यह एक बफर की जरूरत है)।

तो, इस बिंदु पर जाने का सबसे अच्छा तरीका है जहां स्विचिंग बफ़र्स अधिक मायने रखता है वास्तव में बफ़र्स हैं जिन्हें आप स्विच करना चाहते हैं

और, जब आपने ऐसा कर लिया है, तो आप बफ़र्स स्विच करने के लिए आपके लिए उपलब्ध सभी विकल्पों / पैकेजों को देख सकते हैं - जिनमें से कई स्विचिंगबफर्स ​​के तहत Emacs Wiki पर सूचीबद्ध हैं । idoबहुत लोकप्रिय है, जैसे हैं iciclesऔर हैं anything


1
मैं अपने सत्रों के साथ बचत कर रहा हूं (desktop-save-mode 1), इसलिए लगभग हमेशा स्टार्टअप पर कुछ न कुछ खुला रहता है, मैं उन पैकेजों को देखूंगा, धन्यवाद।
अल्बर्टो ज़काग्नि

1

अगर किसी को केवल * स्क्रैच * बफर को हटाने में दिलचस्पी है और * संदेश * बफर के साथ छोड़ा जा रहा है, तो इस कोड ने मेरे लिए काम किया:

(defun acg-initial-buffer-choice ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*"))
  (get-buffer "*Messages*"))

(setq initial-buffer-choice 'acg-initial-buffer-choice)

एक बात जो आपको ध्यान में रखनी चाहिए वह यह है कि यदि किसी भी समय Emacs को प्रदर्शित करने के लिए कोई बफर नहीं बचा है (जैसे आपने सभी बफ़र्स को मार दिया है) तो यह या तो एक * स्क्रैच * या * मैसेज * बफर बना देगा, इसलिए सुनिश्चित करें कि आप जीत गए t अपने वर्कफ़्लो के दौरान सभी बफ़र्स को हटाना, या * खरोंच * फिर से जीवन में वापस आ सकते हैं।

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