Vim: olası tüm takas dosya uzantıları nedir?


32

Vim'deki bir dosyayı düzenlerken, geçerli dosyanızla aynı adda, ancak .swpuzantısına sahip bir takas dosyası oluşturur .

Eğer .swpönceden alınmış, o zaman bir a üretir .swotane. Eğer bu zaten alınmışsa, o zaman .swavb.

Bu dosyalar için adlandırma-geri dönüş sırasının tam olarak ne olduğuna dair herhangi bir belge bulamadım, uzantıların hangi sözleşmeye göre seçilebileceğini kimse açıklayabilir mi?


Ayrıca bakınız: Vi ve Vim
kedi

Yanıtlar:


44

Aradığınız belirli kod parçası (ve yorum) içindedir 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

Kod parçacığı gelen bilgiler ise Vim'ın yardım. Bakınız :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.


9

yeterince iyi .gitignore

Buradaki diğer cevaplar daha açık bir şekilde teknik olarak tamamlanmış olsa da, bu konuda en çok değer verdiğim nokta için yeterince iyi bir giriş .gitignore:

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

Diğer yanıtlardan vimgörebileceğiniz gibi, yüzlerce başka ad oluşturabilirsiniz, ancak bu başarısızlığa uğramadan önce 16 takas dosyası biriktirmeniz gerekir . Gibi bir şey için genelleme ile *.s[a-z][a-z]de maç olacak daha doğru görünebilir geçerli uzantıları sürü halinde .gitignorevasıtasıyla bu dosyaların tarafından izlenmez git. 20 yıl boyunca aynı dosya için 16 adet takas dosyası oluşturmayı başaramadım, vimbu yüzden aynı şeyi yapmayı başarabildiğinizi umuyorum ve bu sizin için işe yarar.

daha katı sürüm

Yorumlarda belirtildiği gibi, Flash geliştiricileri .swfdosyalara sahip olabilir;

*.sw[g-p]

Bu da çoğu insan için bol olan 10 takas dosyasını görmezden gelir. Tek üzücü kısmı "takas" anılarını kaybetmen.


2
Bir şeyleri özümsemediğim sürece, bir sonraki “swo” olmadığından bu sadece “swp” yi yakalayacak. Şahsen, "* .sw [ap]" 'ı verdiğiniz nedenden dolayı ve ayrıca "takas"
yazdığından

1
Vim olmayan şeyleri görmezden gelmemek için depodaki gibi .sw2veya takas edilen dosyaları değiştirin .sw$.
civcivler

2
.swfDosyalarınızı eklemeyi unutmayın . Veya Flash geliştiricilerinizi HTML5 :-) 'e yükseltin
Jan Fabry

3
Önde gelenleri .veya _eklenenleri kontrol ederek meşru dosyaların çoğunun yakalanmasını önleyebilirsiniz .
IMSoP

2
*.sw[a-p]Anımsatıcıyı kendim keşfettim . Bayıldım :)
Wayne Werner

1

Bu .gitignore alternatifi herkesi tatmin etmelidir. İkinci satır, '* .swf' bilgisini yoksaymayı olumsuzlar.

*.sw[a-p]
!*.swf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.