Я зробив плагін під назвою "noswapsuck", який дозволяє включати свопфайл лише тоді, коли буфер містить незбережені зміни. Після збереження змін, файл swap очищається. Отже, свопі файли, які містять той самий вміст, що і файл на диску, будуть видалені.
Отримайте його тут: noswapsuck.vim
Це добре працює для мене, але я раніше цього не публікував, тому бажаю відгуків.
Переваги:
- Єдиними свопфілами, які залишаються на вашому диску, будуть важливі свопфіли, які насправді відрізняються від файлу!
Недоліки:
Якщо в буфері є файл swap, він не буде виявлений при першому відкритті файлу. Він буде виявлений лише тоді, коли swapfile
ввімкнено функцію, коли ви починаєте редагувати буфер. Це прикро запізнюється і перебиватиме вас. (Вирішено. Тепер ми перевіряємо наявність наявного swapfile, коли буфер відкрито, тимчасово знову ввімкнувши цю swapfile
опцію.)
Якщо ви працюєте в середовищі, де ви хочете звести до мінімуму записи на диск (наприклад, низька потужність, файли, встановлені через мережу, або редагування величезного файлу), тоді не ідеально тримати видалення та повторне створення файлу swap для кожного зберегти та відредагувати. У таких ситуаціях ви можете:
:let g:NoSwapSuck_CloseSwapfileOnWrite = 0
який збереже swapfile після запису, але все одно видалить його, коли буфер втратить фокус.
До речі, у мене є ще один маленький плагін, :DiffAgainstFileOnDisk
який може бути дуже корисним після натискання (r)ecover
, щоб перевірити, чи буфер, який ви відновили, є новішим чи старшим за існуючий файл, чи ідентичний йому.