विम: सभी संभव स्वैप एक्सटेंशन क्या हैं?


32

जब आप किसी फ़ाइल को vim में संपादित कर रहे होते हैं, तो वह आपकी वर्तमान फ़ाइल के समान नाम के साथ एक स्वैफ़ाइल बनाती है, लेकिन एक .swpएक्सटेंशन के साथ ।

यदि .swpपहले से लिया गया है, तो यह एक को उत्पन्न करता है .swo। यदि वह पहले से ही लिया गया है, तो आप प्राप्त करते हैं .swa, आदि।

मुझे इन फ़ाइलों के लिए सटीक नामकरण-फ़ॉलबैक ऑर्डर के बारे में कोई दस्तावेज़ नहीं मिला, क्या कोई भी इस बात को स्पष्ट कर सकता है कि एक्सटेंशन किस कन्वेंशन के लिए चुने गए हैं?


इन्हें भी देखें: वीआई और विम
बिल्ली

जवाबों:


44

कोड का विशेष टुकड़ा जिसे आप (और टिप्पणी) के लिए देख रहे हैं memline.c:

    /* 
     * Change the ".swp" extension to find another file that can be used. 
     * First decrement the last char: ".swo", ".swn", etc. 
     * If that still isn't enough decrement the last but one char: ".svz" 
     * Can happen when editing many "No Name" buffers. 
     */
    if (fname[n - 1] == 'a')        /* ".s?a" */
    {   
        if (fname[n - 2] == 'a')    /* ".saa": tried enough, give up */
        {   
            EMSG(_("E326: Too many swap files found"));
            vim_free(fname);
            fname = NULL;
            break;  
        }
        --fname[n - 2];             /* ".svz", ".suz", etc. */
        fname[n - 1] = 'z' + 1;
    }
    --fname[n - 1];                 /* ".swo", ".swn", etc. */

22

कोड स्निपेट से जानकारी है विम की मदद में। देखें :h swap-file:

The name of the swap file is normally the same as the file you are editing,
with the extension ".swp".
- On Unix, a '.' is prepended to swap file names in the same directory as the
  edited file.  This avoids that the swap file shows up in a directory
  listing.
- On MS-DOS machines and when the 'shortname' option is on, any '.' in the
  original file name is replaced with '_'.
- If this file already exists (e.g., when you are recovering from a crash) a
  warning is given and another extension is used, ".swo", ".swn", etc.
- An existing file will never be overwritten.
- The swap file is deleted as soon as Vim stops editing the file.

Technical: The replacement of '.' with '_' is done to avoid problems with
       MS-DOS compatible filesystems (e.g., crossdos, multidos).  If Vim
       is able to detect that the file is on an MS-DOS-like filesystem, a
       flag is set that has the same effect as the 'shortname' option.
       This flag is reset when you start editing another file.

                            *E326*
       If the ".swp" file name already exists, the last character is
       decremented until there is no file with that name or ".saa" is
       reached.  In the last case, no swap file is created.

17

आंखों पर थोड़ा आसान, रेगेक्स-बोल:

[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-v][a-z]
[._]sw[a-p]

इसका स्रोत विम के लिए गिथब की अपनी गितिग्नोर फाइल है ।


यह गलत तरीके से ".swq" के माध्यम से ".swz" से मेल खाता लगता है।
एरिक टावर्स

@EricTowers यह अब सही होना चाहिए।
रूबल

2
शायद अधिक महत्वपूर्ण ... क्या आपने गिट में पैच पर धकेल दिया है? :-)
एरिक टॉवर्स


9

काफी है .gitignore

जबकि अन्य उत्तर यहां स्पष्ट रूप से अधिक तकनीकी रूप से पूर्ण हैं , अधिकांश एस के लिए एक अच्छी पर्याप्त प्रविष्टि .gitignoreहै, जहां मैंने इस बारे में सबसे अधिक बार ध्यान दिया है:

# vim swap files
##################
*.sw[a-p]

जैसा कि आप अन्य उत्तरों से देख सकते हैं कि vimसैकड़ों अन्य नाम बन सकते हैं, लेकिन इससे पहले कि आप असफल होंगे 16 स्वैप फ़ाइलों को स्टैक करना होगा। किसी चीज़ के सामान्यीकरण के द्वारा *.s[a-z][a-z]और अधिक सही दिखाई दे सकता है यह बहुत सारे वैध एक्सटेंशनों से मेल खाएगा, जिसका .gitignoreअर्थ है कि उन फ़ाइलों को ट्रैक नहीं किया जाएगा git। मैंने कभी भी उपयोग vimकरने के 20 वर्षों में एक ही फ़ाइल के लिए 16 स्वैप फ़ाइलें बनाने में कामयाब नहीं हुआ है, इसलिए मुझे आशा है कि आप ऐसा करने का प्रबंधन कर सकते हैं और यह आपके लिए काम करेगा।

सख्त संस्करण

जैसा कि टिप्पणियों में बताया गया है कि फ़्लैश डेवलपर्स के पास .swfफाइलें हो सकती हैं ताकि आप पसंद कर सकें

*.sw[g-p]

जो अभी भी 10 स्वैप फ़ाइलों को नजरअंदाज करेगा जो कि ज्यादातर लोगों के लिए बहुत कुछ है। केवल दुखद हिस्सा आप "स्वप्न" महामारी खो देते हैं।


2
जब तक मैं कुछ याद नहीं कर रहा हूं, तो वह केवल "स्वैप" को पकड़ने वाला है क्योंकि अगले एक "झपट्टा" है "स्वाक" नहीं। व्यक्तिगत रूप से, मैं आपके द्वारा दिए गए कारण के लिए "* .sw [एपी]" का उपयोग करता हूं और इसलिए भी कि यह "स्वैप" पढ़ता है :)
जोएल

1
ऐसी चीज़ों को नज़रअंदाज़ करने से बचने के लिए जो फ़ाइलों को स्वैप नहीं करती हैं जैसे कि .sw2या .sw$जिन्हें रेपो में ट्रैक किया जाना चाहिए।
चूजों

2
अपनी .swfफ़ाइलों को शामिल करना याद रखें । या अपने Flash Developers को HTML5 :-)
Jan Fabry

3
आप अग्रणी .या जाँच के लिए जाँच करके सबसे वैध फाइलों से बच सकते हैं _
IMSoP

2
मैंने *.sw[a-p]खुद महामारी की खोज की । मुझे यह पसंद है :)
वेन वर्नर

1

यह .gitignore विकल्प सभी को संतुष्ट करना चाहिए। दूसरी पंक्ति '* .swf' की उपेक्षा करती है।

*.sw[a-p]
!*.swf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.