Какова цель файлов подкачки?

74

Когда я редактирую файлы, Vim стремится создавать файлы с именами , которые меня раздражают. Из , я вижу, что опция подавляет создание файлов подкачки..filename.swpvim -h-n

Существует ли директива vimrc, которую я могу использовать для отключения файлов подкачки по умолчанию?

Какова цель файлов подкачки, и какие функции я бы упустил, подавив их?

200_success
источник
FWIW, я нахожу файлы подкачки также раздражающими, и некоторое время я пытался использовать, noswapfileкак предложено ниже. Я в конце концов сдался и выключил это, хотя, потому что очевидно преимущества перевешивают раздражения - buuuuuut, я фактически не помню, что убедило меня восстановить использование файла подкачки. Возможно, мой компьютер вышел из строя, и я не смог восстановить некоторые файлы, которые потерял, что было бы тривиально с включенными файлами подкачки.
Кайл Стрэнд

Ответы:

89

Причины для файлов подкачки

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

Файлы подкачки также позволяют избежать редактирования одного и того же файла несколькими экземплярами Vim. Это может быть полезно в многопользовательских системах или просто узнать, есть ли у вас другой Vim, уже редактирующий файл.

Отключение файлов подкачки

Если вы хотите полностью отключить создание файлов подкачки (что я бы не рекомендовал), вы можете добавить их set noswapfileв свой .vimrc. Это устанавливает глобальное значение опции. Затем вы можете переопределить это для определенных буферов, используя :setlocal swapfileпри запуске Vim.

Организация файлов подкачки

Если ваша проблема связана с дополнительными файлами, распределенными по вашей файловой системе, то вы можете объединить все файлы подкачки в одном месте. Например, создайте ~/.vim/tmpкаталог, а затем добавьте

set directory^=$HOME/.vim/tmp//

к вашему .vimrc. 'directory'Опция содержит список каталогов , в которых Vim будет использовать , чтобы попытаться сохранить файл подкачки.

^=Синтаксис :setпрепендов имя каталога в голову списка, так что Вим будет первым проверить этот каталог.

Знак //в конце имени каталога указывает Vim использовать абсолютный путь к файлу для создания файла подкачки, чтобы не было конфликтов между файлами с одинаковыми именами из разных каталогов.

Обратите внимание, что это не позволит Vim замечать, когда несколько пользователей пытаются редактировать один и тот же файл. Поскольку файл подкачки не находится в том же каталоге, что и исходный файл, Vim другого пользователя не будет знать о файле подкачки и не предупредит их о том, что он уже редактируется.

jamessan
источник
4
В чем преимущество подкачки файлов по сравнению с постоянным удалением после того, как оно было в vim какое-то время?
alpha_989
Я использую vim-auto-save. Не умаляет ли это необходимости в файлах подкачки?
Кевин
@Kevin Это зависит. Если плагин вызывает сохранение в каждом сценарии, в котором Vim выписывает файл подкачки, то, вероятно,. В противном случае все еще будут периоды, когда буфер не сохраняется, и файл подкачки может помочь.
Jamessan
@ alpha_989 Они дополняют друг друга. Файл подкачки позволяет вам восстановить несохраненные изменения. Файл persistent-undo позволяет вам просматривать историю отмен между сеансами Vim, но файл записывается только при сохранении.
Jamessan
Любой способ установки vim no swap только для одного экземпляра? например vim temp.txt --some-command-that-disable-swap? Мой пример использования: какой-то наблюдатель будет следить за любыми изменениями в каталоге, поэтому только тогда я захочу отключить swap, чтобы предотвратить столкновение
Нг Сек Лонг