2009-08-05 20 views
42

जीएनयू emacs में, हर बार जब मैं Ctrl-x Ctrl-b को अपने सभी बफर देखने के लिए हिट करता हूं, तो विंडो बफर सूची दिखाने के लिए विभाजित होती है, या यदि मेरी विंडो पहले ही विभाजित है 2 (उदाहरण के लिए, मेरे पास निचली विंडो में एक खोल चलाना होगा), बफर सूची दूसरी विंडो में दिखाई देती है।emacs सूची-बफर व्यवहार

मेरे वांछित व्यवहार बफर सूची के लिए है मेरी सक्रिय विंडो में प्रदर्शित करने के लिए इतना है कि मैं बफर मैं चाहते हैं का चयन करने के लिए और Ctrl-X Ctrl-ओ को एक ही विंडो में काम कर रहा है, बजाय करने के लिए जारी रख सकते हैं अन्य बफर, बफर का चयन ( दर्ज करें) और दूसरी विंडो में उस बफर को संपादित करना ... मैंने इसके लिए गुगल किया है लेकिन यह एक आम इच्छा प्रतीत नहीं होता है? मुझे आश्चर्य है कि किसी के पास एक कुरकुरा (या अन्य) समाधान है?

उत्तर

54

आप list-buffers बजाय buffer-menu आह्वान करने के लिए rebind करने Cx सीबी चाहते हो सकता है:

(global-set-key "\C-x\C-b" 'buffer-menu) 
+2

मैं जानना चाहता हूं कि कोई तरीका है कि आप छोटी कुंजी जैसे 1, 2, ... या ए, बी, सी ... का उपयोग कर सकते हैं, एक बफर को और अधिक तेज़ी से खोलने के लिए, मुझे पता है कि एसी-कूद-बफर ऐसा कर सकता है , लेकिन इसकी बफर सूची बहुत सरल है, बफर-मेन्यू में मोड, आकार कॉलम जैसी कोई अतिरिक्त जानकारी नहीं है। यदि आप इस समस्या को हल करते हैं, तो इसकी सराहना की जाएगी। @ zimbu668 – CodyChan

13

बिल्कुल एक समाधान नहीं है, लेकिन ido-mode बफर के साथ बातचीत करने के लिए एक अलग और शक्तिशाली तरीका प्रदान करता है। C-x b तब सभी खुले बफर की एक सूची दिखाएगा, और आपके द्वारा चुने गए एक को वर्तमान विंडो में खुल जाएगा।

+1

मुझे आश्चर्य है कि आप क्यों नीचे आ गए ... हमेशा जानना अच्छा है कि मेरे पास विकल्प हैं! – hatmatrix

+0

यदि आप वापस जांच रहे हैं, तो सुझाव के लिए धन्यवाद। मैं अब ido का प्रशंसक हूँ। – hatmatrix

0

समाधान के लिए एक और नहीं-जिसे आपने पूछा- माउस के साथ वांछित बफर का चयन न करें, बल्कि अपना नाम टाइप करना समाप्त करें (कीस्ट्रोक को कम करने और सटीकता बढ़ाने के लिए टैब-पूर्णता का उपयोग करें), फिर वापसी करें। बफर सूची गायब हो जाएगी, और नई फ़ाइल पहले सक्रिय विंडो में खुली होगी।

+0

धन्यवाद - लेकिन मैं ज्यादातर टर्मिनल में काम करता हूं इसलिए कोई माउस नहीं ... लेकिन कभी-कभी मुझे भ्रमित हो जाता है कि कुछ बफर * से शुरू होते हैं या नहीं, लेकिन आप सही हैं, टैब पूर्ण होने से मुझे वहां भी मदद मिलेगी। – hatmatrix

+0

यह मेरे लिए बफर सूची विंडो नहीं हटाता है? – sandos

1

सुनिश्चित नहीं हैं कि जहां मैं इस मिल गया लेकिन:

;;; Faster buffer switching 
(global-set-key [(C tab)] 'buffer-menu) 

इस Ctrl-Tab वर्तमान विंडो में सभी बफ़र्स प्रदर्शित करता है। फिर आप एक बफर पर नेविगेट कर सकते हैं और इसे देखने के लिए एंटर दबा सकते हैं।

+0

धन्यवाद - मेरे पास पहले से ही आरक्षित Ctrl-tab है :)। लेकिन बफर-मेन्यू महत्वपूर्ण है। – hatmatrix

3

आप मूल बफर सूची को पसंद करते हैं (जैसा कि 'buffer-menu समाधान दूसरों के द्वारा प्रस्तावित के खिलाफ), तो आप इस का उपयोग कर सकते :

(global-set-key (kbd "C-x C-b") 'my-list-buffers) 
(defun my-list-buffers (&optional files-only) 
    "Display a list of names of existing buffers. 
The list is displayed in a buffer named `*Buffer List*'. 
Note that buffers with names starting with spaces are omitted. 
Non-null optional arg FILES-ONLY means mention only file buffers. 

For more information, see the function `buffer-menu'." 
    (interactive "P") 
    (switch-to-buffer (list-buffers-noselect files-only))) 

जो पहले की तरह ही है, केवल वर्तमान विंडो में।

+0

मैं स्विच-टू-बफर-अन्य-विंडो और विशेष व्यवहार के साथ अब एक संस्करण का उपयोग कर रहा हूं यदि मैं पहले से ही बफर सूची में हूं। धन्यवाद। – mkiever

11

बस परिवर्तनीय same-window-regexps को कस्टमाइज़ करें। display-buffer किसी भी बफर को प्रदर्शित करेगा जिसका नाम वर्तमान में चयनित विंडो में regexp से मेल खाता है।

(आप "[*]Buffer List" जोड़ना चाहते हैं जाएगा।)

+0

यह सबसे अच्छा जवाब है, क्योंकि यह वास्तविक मुद्दे पर आ जाता है (वर्जन-बफर व्यवहार कैसे संशोधित करता है), वर्कअराउंड प्रदान करने के विरोध में। – xyzzyz

2

मैं अत्यधिक http://www.geekware.de/software/emacs/ से bs.el की सलाह देते हैं यह स्थापित करें और:

(require 'bs) 
(add-hook 'bs-mode-hook 'turn-on-font-lock) 
(global-set-key "\C-x\C-b" 'bs-show) 

यह सही तरीके से बफ़र्स और खिड़की विन्यास प्रबंधन करता है, तो सबकुछ न्यूनतम कीस्ट्रोक की आवश्यकता है।

+0

धन्यवाद - "सही तरीका" आपकी अपेक्षाओं पर निर्भर करता है, है ना? – hatmatrix

4

कोशिश अपने .emacs को

(ido-mode 1) 

जोड़ने के लिए, और परिणाम :) का आनंद

3

अजीब, वहाँ एक जवाब यहाँ ibuffer बारे में नहीं है करने के लिए।

मैं Emacs उपयोगकर्ताओं के बहुमत के लिए एक मानक परिवर्तन के रूप में यह सिफारिश करेंगे:

(global-set-key (kbd "C-x C-b") 'ibuffer) 

ibuffer डिफ़ॉल्ट बफर सूची के लिए एक बहुत उन्नत प्रतिस्थापन है, और केवल सही व्यवहार का अनुरोध सुविधाओं नहीं है, लेकिन एक प्रदान करता है अन्य कार्यक्षमता की संपत्ति।

मैंने Emacs: help me understand file/buffer management में कुछ ibuffer फ़िल्टरिंग और ग्रुपिंग मूल बातें सूचीबद्ध की हैं, लेकिन विवरण के लिए दस्तावेज़ को पढ़ना सुनिश्चित करें।