Vim : 가능한 모든 스왑 파일 확장자는 무엇입니까?


32

vim에서 파일을 편집 할 때 현재 파일과 이름은 같지만 .swp확장자가 있는 스왑 파일이 생성됩니다 .

.swp이미 가져온 경우 하나씩 생성합니다 .swo. 이미 찍은 경우 .swa등 을 얻습니다 .

이 파일들에 대한 정확한 네이밍 폴백 순서가 무엇인지에 대한 문서를 찾을 수 없었습니다. 확장자가 선택된 컨벤션으로 누구든지 명확히 할 수 있습니까?


또한보십시오 : Vi와 Vim
고양이

답변:


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]

이에 대한 소스는 Vim 의 Github 자체 gitignore 파일입니다 .


".swq"에서 ".swz"까지 잘못 일치하는 것 같습니다.
Eric Towers

@EricTowers 이제 정확해야합니다.
루블

2
아마도 더 중요 할 것입니다 ... git의 패치를 밀었습니까? :-)
Eric Towers


9

충분하다 .gitignore

여기에있는 다른 답변은 분명히 더 기술적으로 완성되었지만 여기에 내가 가장 자주 관심을 기울인 대부분 의 경우 충분한 항목 .gitignore이 있습니다.

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

다른 답변에서 볼 수 있듯이 vim수백 개의 다른 이름을 만들 수 있지만 실패하기 전에 16 개의 스왑 파일을 쌓아야합니다. *.s[a-z][a-z]보다 정확한 것으로 일반화하면 유효한 확장자많이 일치 .gitignore하므로 파일이 추적되지 않습니다 git. 나는 20 년 동안 동일한 파일에 대해 16 개의 스왑 파일을 만들지 않았 vim으므로 동일한 작업을 수행 할 수 있기를 바랍니다.

더 엄격한 버전

의견에서 지적했듯이 Flash 개발자는 .swf파일을 가지고 있으므로 선호 할 수 있습니다

*.sw[g-p]

대부분의 사람들에게 충분한 스왑 파일 10 개를 여전히 무시합니다. 유일한 슬픈 부분은 "스왑"니모닉을 잃는다는 것입니다.


2
내가 빠진 것이 아니라면 "swq"가 아니라 "swo"이기 때문에 "swp"만 잡을 것입니다. 개인적으로, "* .sw [ap]"를 당신이 제공 한 이유와 "swap"이라고 읽었 기 때문에 :)
JoL

1
같은 정력 스왑 파일이 아닌 것들을 무시 피하기 위해, .sw2또는 .sw$그이 REPO에서 추적되어야한다.
병아리

2
.swf파일 을 포함시켜야합니다 . 또는 Flash 개발자를 HTML5로 업그레이드 :-)
Jan Fabry

3
행간 .또는 _추가 항목 을 확인하여 적법한 파일이 포착되는 것을 방지 할 수 있습니다 .
IMSoP

2
나는 *.sw[a-p]니모닉을 스스로 발견 했다. I love it :)
Wayne Werner

1

이 .gitignore 대안은 모든 사람을 만족시켜야합니다. 두 번째 줄은 '* .swf'를 무시합니다.

*.sw[a-p]
!*.swf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.