vim에서 파일을 편집하면 현재 파일과 이름은 동일하지만 .swp
확장명이 있는 스왑 파일이 생성됩니다.
이미 점유된 경우 .swp
일대일로 생성됩니다 .swo
. 이미 점유된 경우 .swa
등을 얻습니다.
이러한 파일의 정확한 명명 대체 순서에 대한 문서를 찾을 수 없습니다. 확장명이 어떤 규칙에 따라 선택되었는지 명확히 알 수 있는 사람이 있습니까?
답변1
너무 길어요. swp
, swo
, ..., swa
, svz
, svy
, ..., sva
, ..., saa
. 마지막 항목에 도달하면 오류가 발생합니다.
귀하가 찾고 있는(및 댓글이 달린) 특정 코드 조각이 있습니다.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. */
답변2
코드 조각의 정보예Vim의 도움으로. 바라보다: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.
답변3
눈에 약간 더 편한 정규 표현식은 다음과 같습니다.
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-v][a-z]
[._]sw[a-p]
소스는 Github 자체 gitignore 파일입니다.윔.
답변4
이 .gitignore 대안은 모두를 기쁘게 할 것입니다. 두 번째 줄은 "*.swf"를 무시하여 무효화합니다.
*.sw[a-p]
!*.swf