Vim: Дилемма swap и backup файлов
Swap файлы
Swap файлы сохраняют изменения, которые вы внеси в буфер. В случае сбоя Vim, swap файл позволит восстановить эти изменения. Другая важная роль swap файлов — действовать как механизм блокировки: если открываете файл, который уже открыт в другом сеансе Vim, вы будете предупреждены. Это может быть полезно, особенно в многопользовательской системе.
Отключение swap файлов
Вы можете полностью отключить swap файлы, добавив set noswapfile
в файл конфигурации vim .vimrc
. Однако я бы рекомендовал не отключать их. Вместо этого вы могли бы лучше организовать swap файлы.
Организация swap файлов
Самое неприятное в swap файлах то, что они создаются по всюду в вашей файловой системе, где бы вы ни редактировали файлы. Для решения этой проблемы, вы можете хранить все swap файлы в одном месте.
Сначала создайте каталог для хранения swap файлов, например:
mkdir ~/.vim/swap
Затем поместите этот фрагмент в свой .vimrc
:
set directory=$HOME/.vim/swp//
Параметр directory
содержит список каталогов, в которых Vim попытается сохранить swap файлы. //
в в конце указывает Vim использовать абсолютный путь к файлу для создания swap файла. Это гарантирует, что имя swap файла будет уникальным, поэтому не будет конфликтов имён между файлов с одинаковыми именами из разных каталогов.
Backup файлы
Vim может создавать резервные копии (backup) файлов, которые вы редактируете, чтобы не потерять данные. Я не использую эту функцию Vim, и посоветовал бы настроить лучшее решение для резервного копирования.
Конечно, эта функция может быть полезна. Резервные копии управляются настройкой двух опций: backup
и writebackup
. Если интересно, поищите их в :help
.
Как и в случае с файлами подкачки, вы также можете лучше организовать резервные копии файлов, создав каталог и добавив его в свой .vimrc
:
set backupdir=~/.vim/.backup//
Post Scriptum
Небольшое дополнение к статье. Следует отметить, что swap файлы ни в коем случае не могут заменить резервные копии. Редактор создаёт swap файл когда начинается редактирование файла, а после сохранения и закрытия буфера/выхода из редактора удаляет.
Файлы резервных копий создаются при начале редактирования файла и не удаляются после завершения редактирования. Соответственно, каждый раз, когда вы редактируете файл создаётся его новая резервная копия. С одной стороны это занимает лишнее место, но не так много. С другой стороны вы всегда можете восстановить предыдущую версию файла. Поэтому я всегда включаю опцию создания резервной копии. Легко организовать очистку резервных копий, например, раз в месяц. Написать сценарий удаляющий файлы старше текущей даты на месяц, но не трогающий файлы имена которых входят в список важных файлов.
В Windows файлы в следующем формате:
d%%work%github%laravel-crud-example%.env-20230330-204517.vimbackup
d%%work%github%laravel-crud-example%.gitignore-20230330-212731.vimbackup
d%%work%github%laravel-crud-example%app%Http%Controllers%PostController.php-20230330-213052.vimbackup
d%%work%github%laravel-crud-example%app%Models%Post.php-20230330-212928.vimbackup
d%%work%github%laravel-crud-example%database%migrations%2023_03_30_140626_create_posts_table.php-20230330-210759.vimbackup
d%%work%github%laravel-crud-example%routes%web.php-20230330-213325.vimbackup
В Linux (у меня настроено без сохранения пути файла):
.bashrc-20230223-152347.vimbackup
.bashrc-20230303-202640.vimbackup
.bashrc-20230322-150248.vimbackup
.bashrc-20230413-114805.vimbackup
catppuccin.lua-20230301-124033.vimbackup
colorscheme.lua-20230301-124004.vimbackup
config-20230413-120357.vimbackup
.gitconfig-20230218-181521.vimbackup
.gitignore-20230328-133012.vimbackup
С сохранением пути файлы хранятся в таком формате:
%home%user%.vimrc-20230512-103840.vimbackup
Мой репозиторий с .vimrc
для Linux и _vimrc
для Windows.
Мой репозиторий с конфигурацией для NeoVim.