2012-04-28 18 views
12

बहुत लंबे समय तक मैंने किया है: सी-एक्स बी और फिर कुछ "अद्वितीय" नाम जैसे xbxb। तो मैं एक गैर मौजूद बफर के साथ switch-to-buffer का उपयोग करता हूं। आप कल्पना कर सकते हैं कि सी-एक्स सी-बी मुझे दिखाता है: ऐसे कई नाम। xbxb, xbxbxxx .... कुछ समय बाद (यह एक हफ्ते या उससे भी अधिक) यह वास्तव में परेशान हो जाता है, क्योंकि मुझे पता चलता है कि मैंने पहले से ही सभी अच्छे नामों का उपयोग किया है।मैं एक अस्थायी बफर कैसे खोल सकता हूं

क्या नया बफर खोलने का एक और कैननिक तरीका है? अगर मैं एक और समय खोलना चाहता हूं, तो मैं सी-यू एम-एक्स खोल कहता हूं। उस रेखा के साथ कुछ आदर्श होगा।

(defun new-scratch() 
    "open up a guaranteed new scratch buffer" 
    (interactive) 
    (switch-to-buffer (loop for num from 0 
          for name = (format "blah-%03i" num) 
          while (get-buffer name) 
          finally return name))) 
+0

आप वास्तव में उन सभी अस्थायी बफ़र्स की जरूरत है? मेरी रणनीति है कि इस तरह के एक बफर को "tmp" नाम दिया जाए। जब मुझे इसकी आवश्यकता होती है तो मैं उस पर स्विच करता हूं, फिर जो भी वहां है उसे हटा देता है या इसमें शामिल होता है। –

+0

कभी-कभी मैं करता हूं और कभी-कभी मैं नहीं करता ... – false

उत्तर

6

ऐसा करते हैं।

(defun generate-buffer() 
    (interactive) 
    (switch-to-buffer (make-temp-name "scratch"))) 

जहां "स्क्रैच" द्वारा बदला जा सकता है जो कुछ भी उपसर्ग आप चाहते हैं: इसी के साथ एक आधार के रूप, आप कुछ इस तरह लिख सकते हैं।

+1

'(लूप ...) 'बल्कि' जेनरेट-न्यू-बफर-नाम 'के बजाय। लेकिन क्या इसके लिए पहले से ही कोई आदेश नहीं है - किसी भी तरह? किसी भी मामले में +1। – false

+1

को 'जेनरेट-न्यू-बफर-नाम' के बारे में पता नहीं था, लेकिन AFAIK कोई आदेश नहीं है। –

10

आप make-temp-name का प्रयोग कर एक फ़ाइल का नाम उत्पन्न या एक यादृच्छिक पोस्टफ़िक्स साथ बफ़र होना कर सकते हैं:

+0

+1 भी! यह देखने के लिए इंतजार करना होगा कि कोई मौजूदा कमांड ** ** किसी भी तरह ** है! – false

3

मैं सिर्फ इस सवाल का जवाब करने के लिए (क्योंकि मैं इस समारोह में बहुत कुछ, इसलिए मैंने सोचा का उपयोग यह इसे यहाँ साझा करने के लिए उपयोगी हो जाएगा) साइन अप किया है:

(defun tmpbuf (buf) 
    "open a buffer, 
if it doesn't exist, open a new one" 
    (interactive "sBuffer name: ") 
    (switch-to-buffer 
    (get-buffer-create (concat "*" buf "*")))) 
+0

मैं आपके कमांड और 'सी-एक्स बी' के बीच का अंतर नहीं समझता जो कि 'स्विच-टू-बफर' है, सिवाय इसके कि आप * * के साथ बफर नाम को ब्रैकेट करेंगे। – false

+1

'स्विच-टू-बफर' और 'गेट-बफर-बिल्ड' के बीच का अंतर 'गेट-बफर-बिल्ड' है, बस एक बफर बनाएगा लेकिन इसमें नहीं बदलेगा। जबकि 'स्विच-टू-बफर' एक बफर पर स्विच करने का प्रयास करेगा, यदि ऐसा कोई बफर मौजूद नहीं है, तो यह आपको संकेत देगा। मुझे थोड़ी पैडेंटिक मिलती है, इसलिए मैं 'इंटरैक्टिव' का उपयोग पैरामीटर के साथ करता हूं जो आपको शुरुआत से बफर नाम के लिए संकेत देता है। तो मुझे लगता है कि अगर आपको सिर्फ एक बफर की आवश्यकता है जिसे आप लिखेंगे और फिर तब * आर की परवाह नहीं करेंगे। पी। डिलन का * जवाब बहुत अच्छा है। – dotemacs

+0

मैं सिर्फ एक विशेष नाम के साथ अस्थायी बफर रखना चाहता हूं। आइए कहें कि मैं कारों पर काम कर रहा हूं, मैं '* कार *' नामक एक अस्थायी बफर तैयार करूंगा, जोट सामान नीचे जाकर एक अलग बफर पर जाकर कुछ काम करूँगा। तो अगर मुझे कारों पर अपने नोट्स की जांच करने की ज़रूरत है, तो मुझे पता है कि बफर को '* कार * नाम दिया गया है। यदि आप एक सेट बफर उपसर्ग का उपयोग करते हैं, जैसे ** आरपी। डिलन ** ऊपर दिखाता है, तो आपके पास एक ही उपसर्ग के साथ बहुत सारे बफर होंगे ... एक त्वरित नज़र में उन्हें अलग करना आसान नहीं होगा। – dotemacs

3

मैं सच में यकीन नहीं है कि तुम क्या चाहते हैं। आप कहते हैं कि "मुझे पता चलता है कि मैंने पहले से ही सभी अच्छे नामों का उपयोग किया है", इसलिए इमाक्स नामों को उत्पन्न करने के लिए कोई अच्छा नहीं होने वाला है, लेकिन यदि आप स्वयं नाम निर्दिष्ट करने जा रहे हैं, तो इसे और अधिक कैनोलिक नहीं मिलता है सीएक्सबीnameआरईटी

अन्यथा, पहले से ही एक स्ट्रिंग में प्रवेश करने के लिए सुझाव दिया गया है और एक नया नाम बनाने के लिए किसी प्रकार के "tmp buffer" पैटर्न के साथ इसका उपयोग करने के लिए सुझाव दिया गया है।

या scratch.el उपयोगी साबित हो सकता है, यदि आप वास्तव में जो चाहते थे वह प्रति प्रमुख मोड में एक अस्थायी बफर था।

आप लगभग निश्चित रूप से ibuffer के लिए बाध्य सी-एक्ससी-ख, और अधिक महत्वपूर्ण होते से अस्थायी बफ़र्स को अलग करने के फिल्टर और/या समूहों का उपयोग करने से फायदा हो सकता है। यह सूची खराब हो रही सूची से निपटने के लिए होगा।

आप एक नया फ़ंक्शन लिखने के लिए अजीब प्रतिरोधी प्रतीत होते हैं? भले ही कुछ बनाया गया हो, फिर भी गलत कस्टम फ़ंक्शंस का उपयोग करने के साथ कुछ भी नहीं है - आमतौर पर आप अपनी पसंद के लिए Emacs को अनुकूलित करने के बारे में कैसे जाते हैं।

+0

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

+0

मेरा मतलब "सभी अच्छे नाम" का उपयोग करने के साथ क्या था: ये अद्वितीय नाम हैं जिन्हें मैं टाइप करता हूं जैसे 'df' 'asdf'' ballf' आदि – false

+0

पुन: "फंसे" होने के नाते, क्या आपने अपनी कॉन्फ़िगरेशन को संस्करण नियंत्रण में डालने पर विचार किया है ? बहुत से लोग ऐसा करते हैं, और यह वास्तव में एक शानदार समाधान है। हर जगह आप बस जाते हैं बस अपनी खुद की कॉन्फ़िगरेशन खींचें और आप जाने के लिए तैयार हैं। आप कहीं भी अपनी कॉन्फ़िगरेशन में परिवर्तन कर सकते हैं और उन्हें केंद्रीय भंडार में डाल सकते हैं, और फिर जब आप दूसरी मशीन पर वापस जाते हैं तो उन्हें वापस खींचें। – phils

1
(defun yashi/new-scratch-buffer-in-org-mode() 
    (interactive) 
    (switch-to-buffer (generate-new-buffer-name "*temp*")) 
    (org-mode)) 
(bind-key "<f7>" 'yashi/new-scratch-buffer-in-org-mode) 

मैं एक तेज़ी से नोट लेने के लिए deft उपयोग कर रहा हूँ, लेकिन कभी कभी मैं जानता हूँ कि मैं सामग्री की जरूरत नहीं होगी, लेकिन संगठन मोड में एक बफर की जरूरत है। इसके लिए, यह मुझे अच्छी तरह से सेवा कर रहा है। हिट करें F7 फिर से मेरे नाम में *temp*<2> के साथ एक बफर बनाएगा, Uniquify के अनुसार।

बीटीडब्ल्यू, यदि आप रुचि रखते हैं, तो एक नई डेफ फ़ाइल के साथ एक नया बफर लॉन्च करने का आदेश यहां दिया गया है।इसे लॉन्च करने के लिए एफ 6

(defun yashi/deft-new-file() 
    (interactive) 
    (let ((deft-filter-regexp nil)) 
    (deft-new-file))) 
(bind-key "<f6>" 'yashi/deft-new-file) 
0

आप someone else's Emacs के लिए उपयोग दिया जाता है और आप एक नया बफर खोलना चाहते हैं। यदि आप भाग्यशाली हैं, तो इसने enable-recursive-minibuffers को t पर सेट किया है। यदि नहीं, तो आप अस्थायी रूप से एम कर सकते हैं: इस Emacs लिस्प अभिव्यक्ति eval करने के लिए (मत भूलना बाद में इस पैरामीटर बहाल करने के लिए):

    :

    (setq enable-recursive-minibuffers t) 
    

    अब, आप एक नया बफर खोलने

  • Cx एक बफर नाम के लिए संकेत देता
  • Cuएम: eval और minibuffer शीघ्र करने के लिए अभिव्यक्ति का परिणाम प्रिंट होगा:

    (random) 
    
  • यह आपको (नकारात्मक लोगों सहित) प्रदर्शनीय पूर्णांकों की पूरी रेंज में एक यादृच्छिक संख्या, जो बहुत पहले ही ले लिया होने की संभावना नहीं है देता है । नए बफर पर स्विच करने के लिए पर लौटें।

1

मैं इसका उपयोग अस्थायी बफर खोलने के लिए करता हूं। अची बात है? मुझे ट्रैक करने में मदद करता है कि मैं कौन से बफर खोलेगा, और कब।

`` `

(defun tmp-buffer() 
    "Make a temporary buffer and switch to it - Like C-n for Sublime etc" 
    (interactive) 
    (switch-to-buffer (get-buffer-create (concat "tmp-" (format-time-string "%m.%dT%H.%M.%S"))))) 

` ``

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