Emacs में दो अलग-अलग बफ़र्स में एक फ़ाइल संपादित करें


28

मैं फ़ाइल को foo.barदो बार (या अधिक) एमएसीएस में खोलना चाहूंगा , इसलिए मैं इसके दो अलग-अलग हिस्सों को एक साथ संपादित कर सकता हूं। क्या यह संभव है? शायद बेहतर सवाल है, यह कैसे करना है? क्या अपने स्वयं के बफर / फ्रेम में प्रत्येक उदाहरण को खोलने का एक तरीका है?


आप एक ही बफर को अलग-अलग विंडो में प्रदर्शित कर सकते हैं। क्या यह इस समस्या का हल नहीं है?
टॉम

जवाबों:


35

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

आप एक अप्रत्यक्ष बफ़र बना सकते हैं जिसका अपना बिंदु, चिह्न, मोड और इतने पर है, लेकिन मूल बफ़र के रूप में एक ही सामग्री (और बफ़र को सहेजना उसी फ़ाइल में लिखता है)। दूसरा बफ़र बनाने के लिए जो वर्तमान बफ़र का क्लोन है, चलाएं M-x clone-indirect-buffer RET। उस दूसरी बफ़र को एक अलग विंडो में खोलने के लिए, आप टाइप कर सकते हैं C-x 4 c


3
स्पष्ट करने के लिए: C-x 4 cरन clone-indirect-buffer-other-window, इसलिए इसका उपयोग clone-indirect-bufferउस आदेश का पालन न करने के बजाय किया जाएगा । हालाँकि, मेरे सिस्टम पर, ये दोनों कमांड एक ही काम करते दिखाई देते हैं।
सब्रे वूल्फी

काश मैं यह पता लगा सकता कि यह कैसे याद रखना: - /
pedz

@pedz C-x 4विंडोज़ के लिए उपसर्ग cहै, क्लोन के लिए है । आप चाहें तो अन्य बाइंडिंग को परिभाषित कर सकते हैं। C-x cडिफ़ॉल्ट कॉन्फ़िगरेशन में उपयोग नहीं किया जाता है, आप इसका उपयोग कर सकते हैं यदि आप गलती से मारने के C-x C-cबजाय डर नहीं रहे हैं । मैं C-x 5 cअपने इनिट फ़ाइल में एक नए फ्रेम में क्लोन को परिभाषित करता हूं।
गिल्स एसओ- बुराई को रोकना '10

8

स्प्लिट स्क्रीन मोड: जहाँ ctrl+ का xअर्थ है कि ctrl कुंजी दबाकर रखें और x टाइप करें। इसके बाद नंबर टाइप करें।

ctrl+ x2 (क्षैतिज विभाजन)

या

ctrl+ x3 (ऊर्ध्वाधर विभाजन)

फिर आप उन्हें उसी फ़ाइल पर स्वतंत्र रूप से स्क्रॉल कर सकते हैं या यदि आप उनमें से किसी एक में चाहें तो दूसरा बफर खोल सकते हैं।

एकल दृश्य प्रकार पर लौटने के लिए

ctrl+ x1

यदि आप चाहें तो प्रत्येक स्क्रीन (खंड) को आवश्यकतानुसार कई बार विभाजित कर सकते हैं। उस स्क्रीन का चयन करें जिसे आप पहले विभाजित करना चाहते हैं और फिर उस पर एक क्षैतिज या ऊर्ध्वाधर विभाजन करें।


ओह! क्या आपको फ़्रेम के बीच कीबोर्ड नेविगेशन शामिल नहीं करना चाहिए? प्रत्येक "फ्रेम" में दृश्यमान "विंडो" के माध्यम से C-x oचलाता है other-windowऔर साइकिल चलाता है । (एमएसीएस कॉन्फ़िगरेशन का उपयोग करते हुए जहां विंडो प्रबंधक विंडो को फ़्रेम कहा जाता है, और उनके अंदर के अलग-अलग पैनल को विंडोज़ कहा जाता है (मुझे पता है, मुझे पता है, लेकिन मैं इसके लिए ज़िम्मेदार नहीं हूं।)
dmckee

मैं माउस का उपयोग करते हैं।
मैट एच।

1

Emacs पैनसेज़ (विंडोज़) के लिए पक्षपाती है, न कि फ्रेम से। एक ही फ्रेम में एक ही बफर को खोलने के लिए अक्सर एक ही फ्रेम में एक और खिड़की को खोलना वांछनीय है। लेकिन C-x 5 cडिफ़ॉल्ट रूप से अनबाउंड है। यह कोड लापता clone-indirect-buffer-other-frameफ़ंक्शन को परिभाषित करता है:

(global-set-key [?\C-x ?5 ?c]
             '(lambda(newname display-flag)
               "Like `clone-indirect-buffer-other-window' but display in another frame."
               (interactive
                (progn
                  (if (get major-mode 'no-clone-indirect)
                      (error "Cannot indirectly clone a buffer in %s mode" mode-name))
                  (list (if current-prefix-arg
                            (read-buffer "Name of indirect buffer: " (current-buffer))) t)))
               (save-window-excursion
                 (let ((newbuf (clone-indirect-buffer newname display-flag)))
                   (switch-to-buffer-other-frame newbuf)
                   )
                 )
               )
            )
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.