हाँ, कि है कि आप क्या करना चाहते हैं: एक बफर में फ़ाइल पर जाएँ, और कि बफर में पाठ पर कार्य करते हैं।
आप नहीं को बफर प्रदर्शित करना है, यानी, उपयोगकर्ता को इसे देखने की आवश्यकता नहीं है।
और दक्षता के लिए: एक बफर में पाठ को जोड़ना आमतौर पर अधिक टेक्स्ट में हेरफेर करने का प्रभावी तरीका है।
आप कई तरीकों से एक बफर में एक फ़ाइल पर जा सकते हैं। उपयोग के मामले के आधार पर आप इसके लिए मौजूदा फ़ाइल बफर का उपयोग करना चाहेंगे। यही है, अगर फ़ाइल Emacs में पहले से ही "खुला" है तो आप इसके बफर का उपयोग करना चाहेंगे।
या आप किसी भी मौजूदा फ़ाइल बफर को पहले से ही "खुली" फ़ाइल के लिए अवहेलना करना चाहेंगे, और फ़ाइल को नए बफर में पढ़ सकते हैं। इसके लिए, @Sean उल्लेख के रूप में, आप insert-file-contents
का उपयोग कर रहे बफर के साथ कर सकते हैं। आप with-temp-buffer
या generate-new-buffer
का उपयोग करके बफर बना सकते हैं, फिर से, जो आप चाहते हैं/इसके साथ करने की आवश्यकता है।
यदि आप पहले से ही फ़ाइल पर जा रहे बफर का पुन: उपयोग करना चाहते हैं, तो आप यह जांच सकते हैं कि इसे स्मृति में संशोधित किया गया है, चाहे वह संकुचित हो, आदि, और जो भी आपके उपयोग के मामले के लिए उपयुक्त है। फ़ंक्शन find-buffer-visiting
का उपयोग करके आप जांच सकते हैं कि पहले से ही एक बफर फ़ाइल (किसी भी पथ/फ़ाइल नाम का उपयोग कर) का दौरा कर रहा है।
फ़ाइल पर जाने के लिए, किसी भी मौजूदा बफर का लाभ उठाकर, आप find-file-noselect
का उपयोग कर सकते हैं। वह फ़ंक्शन उस बफर को लौटाता है जो फ़ाइल पर जाता है, ताकि आप उस बफर को with-current-buffer
पर पहली तर्क के रूप में पास कर सकें। ये रहा एक सरल उदाहरण।
(with-current-buffer (let ((enable-local-variables ())) (find-file-noselect file))
;; Do some stuff with the text in the buffer.
;; Optionally save the buffer back to the file.
)
(enable-local-variables
nil
करने के बंधन एक छोटी सी अनुकूलन, मामले ऐसे हैं जिनमें बफर-स्थानीय चर के साथ परेशान करने के लिए की जरूरत नहीं है के लिए है।)
यदि लाइन लाइन से लाइन लाइन को प्रोसेस करना है, तो आमतौर पर 'फॉरवर्ड लाइन' या 'एंड-ऑफ-लाइन' का उपयोग करना तेज़ होता है। – jch
मेरे अनुभव में 'अग्रेषित लाइन' और किन का उपयोग करके फ़ाइल के अंत की पहचान करना थोड़ा मुश्किल है यदि अंतिम पंक्ति एक नई लाइन के साथ समाप्त हो सकती है या नहीं। – Sean