2010-06-29 16 views
29

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

यहाँ समस्याओं में से कुछ है कि मैं पर काम करना चाहते हैं कर रहे हैं:

  1. मैं भूल मेरी बफ़र्स के कुछ क्या कहा जाता है, लेकिन मुझे समझ नहीं आता क्यों Cx सीबी दो भागों में अपनी खिड़की विभाजन बफर और मिनी बफर से बाहर निकलता है। निश्चित रूप से मैं बफर स्विच कर सकता हूं और यात्रा करने के लिए एक बफर चुन सकता हूं, लेकिन यह अनजान महसूस करता है, और मुझे दो बफर खोलने के साथ छोड़ देता है।

  2. जब मैं किसी फ़ाइल की बजाय निर्देशिका पर जाता हूं, तो मेरे पास सभी फ़ाइलों और निर्देशिकाओं की एक सुविधाजनक सूची है। मैं आमतौर पर इसके साथ दो चीजों में से एक करना चाहता हूं: 1) एक फ़ाइल खोलें और कभी भी इस बफर को कभी न देखें या 2) फाइलों का एक गुच्छा खोलें और कभी भी इस बफर को कभी न देखें। मुझे वास्तव में यह नहीं पता कि यह कैसे करना है, जैसे कि बिंदु को एक फ़ाइल में ले जाना और वापसी को मारना इन चीजों में से कोई भी नहीं करता है।

  3. मुझे पता है कि मेरे बफर टैब की तरह नहीं हैं, लेकिन मुझे लगता है कि मैं जो चाहता हूं उसे ढूंढने के लिए उनके माध्यम से स्क्रॉल करना चाहता हूं। मुझे इसके लिए किसी भी कुंजी-बाइंडिंग की जानकारी नहीं है, लेकिन मैं इसे एम-एन/एम-पी या पसंद करना चाहता हूं। फिर फिर, यह बफर स्विच करने के लिए एक बहुत ही अक्षम तरीका हो सकता है।

  4. जब मैं किसी भी प्रकार की इंटरैक्टिव सहायता (उदाहरण के लिए ईएसएस में) खोलता हूं, तो मुझे उस बफर पर वापस स्विच करने की आदत है जिसमें मैं काम कर रहा था और सी-एक्स 1 का उपयोग करके एक बफर पर वापस जाने के लिए। जब मैं ऐसा करता हूं, हालांकि, मेरी बफर सूची में सहायता बफर लटकता है, और मुझे भ्रमित करता है। मुझे पता है कि मैं उस बफर पर स्विच कर सकता हूं, इसे मार सकता हूं, वापस स्विच कर सकता हूं, और फिर एक बफर पर वापस जा सकता हूं, लेकिन यह गलत लगता है।

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

कोई भी उत्तर जो मुझे सही तरीके से समझने में मदद करेगा, या मेरे बफर या फ़ाइलों को प्रबंधित करने के लिए एक अधिक कुशल तरीका की सराहना की जाएगी।

+1

2. http://xahlee.org/emacs/file_management.html अंतिम प्रश्न देखें – Yktula

+0

मुझे डियर में फ़ाइलों को चिह्नित करने के बारे में पता नहीं था। यह पहली बार उपयोगी लग रहा था, लेकिन तब मैं यह नहीं समझ सका कि मेरी सभी चिह्नित फ़ाइलों को एक बार में कैसे खोलें। क्या कोई जानता है कि इसे कैसे करना है? – Wilduck

+1

यह डिफ़ॉल्ट क्षमताओं से थोड़ा अजीब चूक है, वह एक। आप किसी अन्य विंडो में केवल मौजूदा लाइन के लिए फ़ाइल खोलने के लिए 'Co' का उपयोग कर सकते हैं, और बाद में डाली गई विंडो में रह सकते हैं, जो' सीएन' और 'सीपी' के साथ संयोजन में ऊपर और नीचे जाने के लिए आपको कई फाइलें खोलने में सक्षम बनाता है उत्तराधिकार बहुत तेज़ी से (हालांकि यह सबसे हाल ही में खोला गया बफर, लेकिन शायद आदर्श नहीं है) को दफन करता है। एक बेहतर उत्तर के लिए, यहां देखें: http://stackoverflow.com/questions/1110118/in-emacs-dired-how-to-find-visit-multiple-files – phils

उत्तर

17

मुझे लगता है कि आप वास्तव में कई बफरों से निपटने के लिए Ido का आनंद लेंगे जिनके नाम आपको बिल्कुल याद नहीं कर सकते हैं। जब आप C-x b टाइप करते हैं तो यह सबसे अधिक उपयोग किए गए क्रम में खुले बफर की एक सूची दिखाता है। जैसे ही आप बफर नाम में कुछ वर्ण टाइप करते हैं, सूची फ़िल्टर की जाती है। आपके द्वारा लिखे गए पात्रों को नाम या संगत की भीख मांगना नहीं है। बफर विकल्पों के माध्यम से C-f, C-b या बाएं/दायां तीर कुंजी चक्र का उपयोग करना।

इसके अलावा M-x

बंद खिड़कियों C-x 0 साथ किया जाता है के लिए कार्यक्षमता की तरह Ido के लिए Smex देखते हैं। जानबूझकर खिड़की को विभाजित करने के लिए C-x 2 क्षैतिज, C-x 3 लंबवत के लिए किया जाता है। मुझे इस सुविधा से प्यार है, क्योंकि यह मुझे एक ही समय में परीक्षण और उत्पादन कोड दिखाई देता है। C-x o मुझे दूसरी विंडो में ले जाता है।

+4

और निश्चित रूप से 'सी-एक्स 1', जो फ्रेम में किसी भी * अन्य * विंडो को बंद करता है, वर्तमान को अधिकतम करता है। 'सी-एक्स 4 0' भी है जो 'किल-बफर-एंड-विंडो' से जुड़ा हुआ है, जो कि मूल समस्याओं में से एक के लिए एक उपयुक्त समाधान हो सकता है। – phils

+1

जबकि अन्य महान उत्तर हैं, मैं इसे स्वीकार करने के रूप में चिह्नित कर रहा हूं, क्योंकि इडौ मेरे बफरों के नामों को काफी सुंदर तरीके से भूलने की मेरी सबसे निराशाजनक समस्या हल करता है। – Wilduck

+5

मुझे यह भी एहसास हुआ कि मैं इडौ के साथ मिनीबफर से बफर को मार सकता हूं। सी-बी तो उसको चुनें जिसे मैं मारना चाहता हूं और सी-के। आश्चर्यजनक। – Wilduck

18
  1. बाइंड ibuffer करने के लिए C-x C-b। यह कई उन्नत सुविधाओं के साथ एक बेहतर बफर लिस्टिंग सुविधा है, और इसका डिफ़ॉल्ट व्यवहार वर्तमान बफर को बफर सूची के साथ प्रतिस्थापित करना है, और फिर जब आप बफर चुनते हैं तो सूची को दफनाना (आपको नए चुने हुए बफर के साथ छोड़कर मूल एक)।

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

  2. के बजाय का उपयोग करते समय का उपयोग करें। यह पीछे छोड़ने के बजाय डायर बफर को मारता है। किसी भी बफर में C-h m आपको अपने प्रमुख मोड (मामूली मोड के लिए सहायता के बाद) के लिए सहायता दिखाएगा, और आप वहां उपलब्ध सभी उपलब्ध थर्ड कुंजी बाइंडिंग के बारे में पढ़ सकते हैं।

  3. http://www.emacswiki.org/cgi-bin/wiki/TabBarMode? (संपादित करें: मैं इस के लिए रेमी का जवाब पसंद करता हूं, लेकिन टैबबारमोड आपको दृश्य टैब तत्व देगा यदि आप विशेष रूप से उस पर उत्सुक थे।)

  4. q एक बहुत से बड़े मोड में 'छोड़ने' फ़ंक्शन से जुड़ा हुआ है। आम तौर पर यह इसे मारने के बजाए बफर को मारता है, लेकिन मुझे निश्चित रूप से यह ठीक लगता है।

# 1 पर एक छोटे से विस्तार से बता दें ibuffer अच्छा सुविधाओं के बहुत सारे है, और M-x customize-group ibuffer RET आप कैसे आप इसे अपने पसंद के हिसाब से अनुकूलित कर सकते हैं में से कुछ विचार दे देंगे।

इसके अलावा, आप बफर सूची को कई मानदंडों से फ़िल्टर कर सकते हैं (फिर, C-h m का उपयोग अपने सहायता पृष्ठ को देखने के लिए), और फिर वर्तमान फ़िल्टर से 'समूह' परिभाषा उत्पन्न करें, और भविष्य के उपयोग के लिए अपने कस्टम फ़िल्टर और समूह को सहेजें ।

उदाहरण के लिए:

  • / f ^/var/www/ RET: फिल्टर बफर सूची /var/www/ के साथ शुरू केवल फ़ाइल नाम दिखाने के लिए।
  • / s Web filters RET: नाम और सक्रिय फ़िल्टर को अपनी init फ़ाइल में सहेजें।
  • / g Web development RET: सक्रिय फ़िल्टर से नामित समूह बनाएं।
  • / S My groups RET: नाम और अपनी init फ़ाइल में समूह परिभाषाओं को सहेजें।
  • / r Web filters RET: "वेब फ़िल्टर" फ़िल्टर का आह्वान करें।
  • / R My groups RET: "मेरे समूह" समूह का आह्वान करें।
  • RET समूह नाम पर इसे संक्षिप्त या विस्तृत करने के लिए।
  • C-k और C-y समूह को मारने और यंक करने के लिए, उन्हें फिर से व्यवस्थित करने के लिए।
  • अधिक जानकारी के लिए C-h m ...

इस तरह से आप चल रहे एक भी Emacs उदाहरण हो सकता है, और कार्य के विभिन्न प्रकार के लिए फिल्टर और समूह बनाने, और आसानी से उनके बीच स्विच।

+0

प्रश्न को फिर से पढ़ना, मुझे शायद ibuffer की फ़िल्टरिंग और समूह क्षमताओं पर जोर देना चाहिए। मैंने तदनुसार अपना जवाब अपडेट कर लिया है। – phils

+0

आपके उत्तर के लिए धन्यवाद! मुझे नहीं पता था कि आप एक थके हुए इस्तेमाल कर सकते हैं। हालांकि मैं अपने चौथे प्रश्न के लिए आपके उत्तर में थोड़ा उलझन में हूं। बस 'क्यू'? एक ईएसएस सहायता बफर में या तो मुझे अन्य बफर में ले जाता है जब मेरी खिड़कियां विभाजित होती हैं, या मेरी खिड़की को विभाजित करती हैं। शायद मैं इसे गलत कर रहा हूं, लेकिन यह उपयोगी नहीं लगता है ... – Wilduck

+1

क्षमा करें, मैं ईएसएस से परिचित नहीं हूं। मैंने माना था कि आप Emacs * \ * Help \ ** बफर/मोड का उपयोग करके इंटरैक्टिव सहायता का जिक्र कर रहे थे, जिसमें 'क्यू' इस तरह से बाध्य है (वास्तव में यह डियर, बफर-मेन्यू, इबफर, बीएस-शो में है, और कम से कम एक बड़े अनुपात (शायद बहुमत) अंतर्निहित प्रमुख मोड जो अल्फा-न्यूमेरिक वर्णों को कमांड में बाध्य करते हैं। (यदि ईएसएस इस वर्णन को फिट करने में मदद करता है, तो शायद आप उन्हें सुधार के रूप में सुझाव दे सकते हैं?) जैसा कि दूसरे में बताया गया है टिप्पणी, 'सीएक्स 4 0' रन' मार-बफर-एंड-विंडो 'जो एक सभ्य जेनेरिक समाधान बनाता है। – phils

2

मुझे लगता है कि बफर के माध्यम से फ़्लिप करने के लिए नंबर एक सबसे उपयोगी विस्तार Anything है। यह आपको बफर (या फ़ाइल!) नाम का हिस्सा टाइप करना शुरू कर देता है और यह पता लगाएगा कि आप क्या चाहते हैं। मैंने कुछ-बफर के लिए सी-एक्स बी को रिबाउंड किया है। यह जीवन को इतना बेहतर बनाता है।

+1

मुझे यह एक नजर आएगी। लेकिन मुझे आमतौर पर पता है कि मेरी फाइलें कहां हैं मेरे कंप्यूटर पर हैं। बस emacs में नहीं। – Wilduck

4

मैं अगले और पिछले बफर पर जाने के लिए C-x right (या C-x C-right) और C-x left (या C-x C-right) का उपयोग करता हूं। मुझे अब कुछ बफर से कोई फर्क नहीं पड़ता है जो Emacs में चारों ओर रखता है लेकिन आप बफर सूची में k का उपयोग कर सकते हैं ताकि आप अब और अधिक उपयोग नहीं कर सकें।

+0

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

+0

बीएस अपनी कुंजी-बाइंडिंग प्रदान नहीं करता है, लेकिन यदि आप अन्य विकल्पों को अपनी विशेषताओं को प्राथमिकता देते हैं, तो मैं बस 'सीएक्स सी-बाएं', 'सीएक्स सी-दाएं', और 'सीएक्स सीबी' को फिर से बांध दूंगा वांछित के रूप में बीएस कार्यों। 'एम-एक्स कस्टमाइज़-ग्रुप बीएस आरईटी' भी देखें। – phils

+0

यह बहुत अच्छा है। मुझे यकीन है कि मैं इसे गुगल कर सकता था, लेकिन किसी कारण से मुझे एम-एन और एम-पी पर पकड़ा गया था। सी-एक्स सही काम करता है। धन्यवाद। – Wilduck

4

आप Iswitchb mode भी कोशिश कर सकते हैं जो C-x b के माध्यम से बफर स्विच करते समय बफर नामों के लिए स्वत: पूर्णता प्रदान करता है।

सक्रिय करने के लिए:

M-x iswitchb-mode 

या अपने .emacs फाइल करने के लिए जोड़ें:

(iswitchb-mode) 

यह बफर स्विचिंग लेकिन थोड़ा और हल्के के लिए Ido mode के समान है।

इसके अलावा, यदि आप अपने बफर की अधिक अनुकूलन सूची चाहते हैं तो M-x bs-showC-x C-b के विकल्प के रूप में उपयोग करें। उस क्रियात्मक प्रकार की सूची प्राप्त करने के लिए उस बफर प्रकार ? में आप प्रदर्शन कर सकते हैं।

2

हमेशा के रूप में, कई इस से आपकी सहायता करने के तरीके हैं; यह व्यक्तिगत वरीयता पर थोड़ा सा निर्भर करता है जो सबसे अच्छा काम करता है, यहां स्पष्टीकरण के साथ कुछ लिंक दिए गए हैं:

  • ibuffer; जो एक अद्यतन बफर मेनू (सी-एक्स सी-बी)
  • ido है, जो आपके पास बफर के माध्यम से स्विच करने के लिए अधिक शक्तिशाली स्वत: पूर्णता है। यह एक तरह का 'बेहतर iswitchb' है।

ये दोनों मेरे लिए पर्याप्त हैं; लेकिन आपको tabbar-mode में भी रुचि हो सकती है, जो आपको प्राथमिक टैब देता है (जैसे फ़ायरफ़ॉक्स में)।

+0

emacs-fu लिंक के लिए धन्यवाद। – Wilduck

संबंधित मुद्दे