Vim: Каковы все возможные расширения подкачки?

Когда вы редактируете файл в vim, он генерирует файл подкачки с тем же именем, что и ваш текущий файл, но с расширением .swp .

Если .swp уже выполнено, он генерирует один .swo . Если это уже принято, вы получаете .swa и т. Д. И т. Д.

Я не мог найти документацию о том, какой именно порядок имен для резервного копирования для этих файлов, может ли кто-нибудь уточнить, по какому соглашению выбираются расширения?

Конкретный фрагмент кода, который вы ищете (и комментарий), находится в 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. */ 

Информация из фрагмента кода находится в справке 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 (eg, 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 (eg, 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. 

В, немного легче на глазах, регулярное выражение:

 [._]*.s[av][az] [._]*.sw[ap] [._]s[av][az] [._]sw[ap] 

Источником этого является Gitub's собственный файл gitignore для Vim .

достаточно хорошо .gitignore

В то время как другие ответы здесь явно более технически завершены, здесь достаточно хорошей записи для большинства .gitignore , где я часто .gitignore с этим:

 # vim swap files ################## *.sw[ap] 

Как вы можете видеть из других ответов, vim может создавать сотни других имен, но вам придется складывать 16 файлов подкачки, прежде чем это произойдет. Обобщая что-то вроде *.s[az][az] может показаться более правильным, оно также будет соответствовать множеству допустимых расширений, которые в случае с .gitignore означают, что эти файлы не будут отслеживаться git . Мне никогда не удалось создать 16 файлов подкачки для того же файла за 20 лет использования vim поэтому я надеюсь, что вам удастся сделать то же самое, и это сработает для вас.

более строгая версия

Как указано в комментариях, разработчики Flash могут иметь .swf файлы, чтобы вы могли предпочесть

 *.sw[gp] 

который по-прежнему будет игнорировать 10 файлов подкачки, что много для большинства людей. Единственная печальная часть – вы теряете мнемоническую «своп».