वर्तमान फ़ाइल को थोड़े अलग नाम से सहेजें


17

मेरी फ़ाइलों में लंबे फ़ाइल नाम हैं और फ़ाइल नाम का एक भाग दिनांक और संस्करण संख्या है। अक्सर मैं लगभग एक ही नाम का उपयोग करके बफर में फ़ाइल को सहेजना चाहता हूं , बस संस्करण संख्या या दिनांक बदलें।

यह बहुत आसान होगा, अगर मेरे पास एक कमांड होता है जो करंट बफर का फ़ाइल नाम किल रिंग में डालता है, ताकि मैं एक फाइल खोल सकूं, तो टाइप करें C-x C-w(फाइल लिखें), Cy के साथ करंट नेम को yank करें, इसे बदलें और सेव करें यह।

मैं विंडोज़ पर एमएसी 24.3 और लिनक्स पर 24.4 का उपयोग कर रहा हूं। मुझे अलग-अलग फ़ाइलनामों का उपयोग करना है और विभिन्न कारणों से नहीं करना है। मुझे खुशी होगी अगर इस कमांड ने AUCTeX / LaTeX के साथ प्रमुख मोड के रूप में काम किया।


1 संपादित करें:

मैंने एक गलती की: मैं टाइप नहीं करना चाहता C-x C-f(= फ़ाइल खोजें), लेकिन C-x C-w(= फ़ाइल लिखें)। मैंने इसे ऊपर ठीक किया।

2 संपादित करें:

एक डुप्लीकेट प्रश्न और उत्तर मिला: /unix//a/45381 लेकिन इससे बेहतर कोई और नहीं है!

संपादित करें 3:

यहाँ: http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Compords.html एक फ़ंक्शन है, जो फ़ाइल नाम के "nondirectory" भाग का चयन करता है:

फ़ंक्शन: फ़ाइल-नाम-नॉनडायरेक्ट्री फ़ाइलनाम

This function returns the nondirectory part of filename.

          (file-name-nondirectory "lewis/foo")
               ⇒ "foo"
          (file-name-nondirectory "foo")
               ⇒ "foo"
          (file-name-nondirectory "lewis/")
               ⇒ ""

अगर मैं केवल लिस्प जानता था ...


ओह, नमस्ते वहाँ केक्स :) मैं वास्तव में यह कई बार खुद को आश्चर्यचकित किया है ... अच्छा सवाल है। और लिस्प आसान है ......
शॉन एलेड

बस यह सवाल पाया गया ... जिज्ञासा से बाहर: "विभिन्न कारण" सलाहकार / सह-संबंधी हैं ...?
mbork

1
@ मैं एक वकील हूँ और पत्र लिखने के साथ-साथ अनुबंध भी करता हूँ। किसी को हाल ही में पत्र खोलना, उसका नाम बदलना, सामग्री को मिटाना और उसी व्यक्ति को एक नया लिखना शुरू करना जो खरोंच से शुरू होने से तेज है। लेकिन उनका नाम बदलने वाले अनुबंधों के संबंध में एक cvs के लिए एक खराब विकल्प है, लेकिन मैं एक और वकील से कभी नहीं मिला, जो LaTeX और Git का उपयोग करता है, इसलिए मुझे अनुबंध के एक नए संस्करण को एक नया फ़ाइल नाम देना होगा ...
केक्स डॉस

काफी उचित। YASnippet के बारे में क्या? यह आपके उपयोग के मामले में बहुत उपयुक्त लगता है।
mbork

@mbork हाँ, मेरे टेम्पलेट्स के लिए मैं सालों से YASnippets का उपयोग कर रहा हूँ। LaTeX, Emacs, orgmode, YASnippets मेरे पीसी को वर्ड और आउटलुक की तुलना में अधिक विश्वसनीय बनाते हैं। ठीक है, मैं इसे लिनक्स मशीन पर लिख रहा हूं, लेकिन यह ऐसी चीज है जिसकी आप वास्तव में सामान्य आईटी हेल्पडेस्क से उम्मीद नहीं कर सकते हैं: विंडोज के बजाय लिनक्स का समर्थन करना।
कीक्स डॉस

जवाबों:


24

यह सब करने की कोई जरूरत नहीं है।

सीधे शब्दों में:

  1. अभी भी मूल फ़ाइल में, हिट C-x C-w। आपको एक नए फ़ाइलनाम के लिए संकेत दिया जाएगा।
  2. हिट M-n, और वर्तमान फ़ाइल नाम आपके लिए डाला जाएगा।
  3. संपादित करें जिसे आप चाहते हैं और RETफ़ाइल को इस नए नाम से बचाने के लिए हिट करें।

आपके पास अभी भी मूल फ़ाइल होगी। यदि आप इसे वापस जाना चाहते हैं, तो बस इसे फिर से देखें C-x C-f


मैं फ़ाइलों / बचत के बारे में Emacs मैनुअल में एक नज़र था, लेकिन यह चाल नहीं मिली। तुम्हे कैसे पता चला? महान!
केक्स डॉस

4
निश्चित नहीं। यह मिनीबर्फर संकेतों के बारे में एक सामान्य बात है। हिटिंग एमपीपी इतिहास के माध्यम से जाता है, और एमएन को मारना आपको "वर्तमान" विकल्प देता है।
मालाबार

5
यदि आप उपयोग कर रहे हैं ido, तो C-fपहले और फिर करें M-n
कौशल मोदी

1
वाह, मैं यह कभी नहीं जानता था। धन्यवाद! ("धन्यवाद, मुझे भी" टिप्पणी के लिए खेद है, लेकिन यह कुछ सरल लेकिन उपयोगी सीखने का एक बड़ा उदाहरण है। विवा ला इमैसेस्टैकएक्सचेंज!
मार्क ऑफ़्लिक

3

वर्तमान बफर में फ़ाइल का नाम कॉपी करना

यहां एक फ़ंक्शन है जिसका उपयोग मैं कैमरून डेसटेल्स के ब्लॉग से करता हूं जो वर्तमान बफर फ़ाइल नाम की प्रतिलिपि बनाता है और इसे मिनीबफ़र में प्रदर्शित करता है।

 
;; स्रोत: http://camdez.com/blog/2013/11/14/emacs-show-buffer-file-name/
(डिफॉन शो-कॉपी-बफर-फ़ाइल-नाम) ()
  "मिनीबफ़र में वर्तमान फ़ाइल के लिए पूर्ण पथ दिखाएं और इसे किल-रिंग में भी कॉपी करें।"
  (सहभागी)
  (चलो (फ़ाइल-नाम (बफर-फ़ाइल-नाम)))
    (यदि फ़ाइल का नाम
        (progn
          (संदेश फ़ाइल-नाम)
          (किल-नई फ़ाइल-नाम))
      (त्रुटि "बफर एक फ़ाइल पर नहीं जा रहा है"))))

वर्तमान बफर में फ़ाइल का नाम बदलना

मैग्नेर स्वेन ने अपने एक ब्लॉग में नीचे दिए गए फ़ंक्शन को लागू किया है जो एक बार में वर्तमान बफर का आसानी से नाम बदल देता है। यह वह नहीं है जो आपने मांगा था, लेकिन मुझे लगा कि यह आपके उपयोग के मामले से संबंधित हो सकता है।

;; स्रोत: http://www.whattheemacsd.com/
(मान नाम बदलें-वर्तमान-बफर-फ़ाइल)
  "वर्तमान बफ़र का नाम बदलें और यह फ़ाइल कर रहा है।"
  (सहभागी)
  (चलो (नाम (बफर-नाम))
        (फ़ाइल नाम (बफर-फ़ाइल-नाम))
    (यदि (और फ़ाइल नाम नहीं है (फ़ाइल-मौजूद-पी फ़ाइल नाम))
        (त्रुटि "बफर '% s' फ़ाइल पर नहीं जा रही है!" नाम)
      (दो (नया नाम) (रीड-फ़ाइल-नाम "नया नाम:" फ़ाइल नाम))
        (यदि (नया नाम प्राप्त करें बफर)
            (त्रुटि "% s 'नामक एक बफर पहले से मौजूद है!" नया-नाम)
          (नया नाम फ़ाइल नाम नया नाम 1)
          (नाम-बफर नया-नाम)
          (सेट-विज़िट-फ़ाइल-नाम नया-नाम)
          (सेट-बफर-संशोधित-पी नील)
          (संदेश "फ़ाइल '% s' का सफलतापूर्वक नाम बदलकर '% s' कर दिया गया।"
                   नाम (फ़ाइल-नाम-अप्रत्यक्ष नया नाम))))))

Magnar Sveen द्वारा समाधान मूल फ़ाइल को हटा देता है और बाद में केवल इसका नाम बदला हुआ फ़ाइल होगा। यह उपयोगी है, लेकिन मुझे पुरानी फ़ाइल के साथ-साथ नाम बदलने की भी आवश्यकता है। कैमरन डेसॉटेल द्वारा किया गया फंक्शन पूरे रास्ते के साथ फाइलनाम को कॉपी करता है। यह मेरे लिए आवश्यक समाधान के काफी करीब है। क्या आप जानते हैं कि इस फ़ंक्शन को कैसे बदलना है, ताकि यह केवल पथ के बिना फ़ाइल नाम को बाहर कर दे? हालाँकि, आपका बहुत-बहुत धन्यवाद।
केक्स डॉस

1
@KeksDose बस बदलने (buffer-file-name)के लिए (file-name-nondirectory (buffer-file-name))पहले समारोह में फ़ाइल नाम बिना निर्देशिका मिलता है।
nispio
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.