अप्रत्यक्ष बफ़र्स का उपयोग क्यों करें?


जवाबों:


16

एक ही बफर के कई स्थानों को देखने और संपादित करने के लिए। इसलिए, आपको एक लंबे बफर को स्क्रॉल करने की आवश्यकता नहीं है, लेकिन बस विंडो को दृश्य क्षेत्र में स्विच करें। प्रत्येक क्लोन किए गए बफर में अलग-अलग मार्क रिंग, संकुचन और अन्य बफर गुण भी होते हैं। यदि आप अप्रत्यक्ष बफर का उपयोग नहीं करते हैं, लेकिन उसी बफर की एक और विंडो बनाते हैं, तो सब कुछ साझा किया जाता है और आप अन्य स्थानों को देखने और संपादित करने से परे अन्य अग्रिम विशेषताओं का प्रदर्शन नहीं कर सकते हैं। उदाहरण के लिए, एक अप्रत्यक्ष बफर के साथ, आप मूल बफ़र को प्रभावित किए बिना सभी कोड ब्लॉक को प्रभावी ढंग से "टैग ट्री" बना सकते हैं। एक विंडो का उपयोग करते हुए, दोनों विंडो में दोनों बफ़र्स को मोड़ दिया जाता है क्योंकि दोनों बफ़र समान हैं।

संक्षेप में, अप्रत्यक्ष बफर एक पूरी तरह से अलग बफर है जो आपके मूल बफर में एक ही टेक्स्ट और फ़ाइल को साझा करने के लिए होता है, इसलिए जब आप क्लोन बफर को सहेजते हैं, तो यह आपकी मूल फ़ाइल को भी बचाता है।


3
मैं सहमत हूं कि अप्रत्यक्ष बफ़रों के लाभ हैं। लेकिन आपके पहले बिंदु को अप्रत्यक्ष होने के लिए बफ़र्स की आवश्यकता नहीं है। आप एक ही बफर के कई स्थानों को देख और संपादित कर सकते हैं, भले ही एक ही बफर को बस दो विंडो में खोला गया हो। लेकिन हां, स्वतंत्र संकीर्णता, तह, आदि मेरी राय में एक अप्रत्यक्ष बफर की मजबूत विशेषताएं हैं।
कौशल मोदी

5
एक ही बफर को कई मोड्स के साथ एडिट करें, (इनडायरेक्ट बफर को कमिंग के साथ मिलाएं)। आप मार्कडाउन मोड के साथ बफर के कुछ हिस्सों को संपादित कर सकते हैं, अजगर मोड के साथ एक और हिस्सा,
जोसन

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

10

एक उपयोग मामला एक फ़ाइल के एक हिस्से पर एक अलग प्रमुख मोड का उपयोग कर रहा है।

उदाहरण के लिए, मैं एक बार कुछ तत्वों के अंदर कोड के साथ xml दस्तावेजों के साथ काम कर रहा था। मैं पूरे दस्तावेज़ को संपादित करने में सक्षम होना चाहता था जैसे कि यह xml था, लेकिन फिर भी प्रोग्रामिंग तत्वों के लिए सभी प्रमुख मोड सुविधाएँ कुछ तत्वों में एम्बेडेड हैं, इसलिए मैं उन तत्वों के शरीर को एक अप्रत्यक्ष बफर में चला रहा था जो कि चल रहे थे उपयुक्त प्रमुख मोड।

यहाँ मेरे विन्यास से एक फ़ंक्शन है जो मैं ऐसा करने के लिए उपयोग करता हूं:

(defun indirect-region (start end)
  "Edit the current region in another indirect buffer.
    Prompt for a major mode to activate."
  (interactive "r")
  (let ((buffer-name (generate-new-buffer-name "*indirect*"))
        (mode (intern
               (completing-read
                "Mode: "
                (mapcar (lambda (e)
                          (list (symbol-name e)))
                        (apropos-internal "-mode$" 'commandp))
                nil t))))
    (pop-to-buffer (make-indirect-buffer (current-buffer) buffer-name))
    (funcall mode)
    (narrow-to-region start end)
    (goto-char (point-min))
    (shrink-window-if-larger-than-buffer)))

नोट: यह सही नहीं है, फ़ॉन्ट-लॉक जैसी चीजों को इस परिदृश्य में उपयोग के लिए विशेष अतिरिक्त काम की आवश्यकता होती है।


4

अप्रत्यक्ष बफ़र्स आपको एक ही बफर के कई विचार देते हैं, विशेष रूप से, कई संकीर्णताएं, जिनमें से प्रत्येक एक अलग बफर की तरह, कई मामलों में कार्य करता है।

जैसा कि पुस्तकालय के लिए टीका narrow-indirect.elकहता है:

आप जितना सोच सकते हैं उससे अधिक के लिए अप्रत्यक्ष बफ़र्स का उपयोग कर सकते हैं। आप एक निर्देशिका लिस्टिंग में उपयोगी (सक्रिय) विचार देने के लिए, उदाहरण के लिए, Dired बफ़र्स के भाग से लिए गए क्लोन का उपयोग कर सकते हैं। केवल कुछ कुंजियाँ / आदेश हैं (जैसे gकि सूची को अद्यतन करने के लिए) जो काम नहीं करते हैं, क्योंकि वे पूरे वायर्ड बफर के एक दृश्य पर निर्भर करते हैं। प्रयोग, और आपको कोई संदेह नहीं होगा कि अप्रत्यक्ष बफ़र्स के लिए दिलचस्प नए उपयोग मिलेंगे।

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