Примітка. Ви не сказали, яку операційну систему використовуєте. Далі працює з оболонкою Unix, але якщо ви працюєте з Windows, ви можете завантажити Cygwin або іншу оболонку з голими кістками.
Раніше я робив те саме, що і ви, запустіть, :e
щоб знову відкрити той самий файл, щоб отримати можливість видалити файл відновлення. Після збоїв або несподіваного перезавантаження комп’ютера я очищаю всі залишки файлів відновлення Vim, запустивши vim -r
файли swap і даючи можливість відновлення продовжуватися.
Коли файли не змінені
Якщо файли не змінилися, я хочу негайно видалити файл відновлення. Було б чудово, якби Vim міг зробити це автоматично, але, на жаль, це не зробити.
Коли файли змінені
Якщо файли змінилися, я запускаю DiffOrig
команду порівняти відмінності між початковою та відновленою версіями. Якщо я задоволений змінами з файлу відновлення, виходжу, зберігаючи файли :x
командою. Якщо ні, я відкидаю відновлені зміни, виходячи з :q!
. Якщо файл відновлення не пов’язаний із збереженим файлом, наприклад, .swp
я, як правило, використовую :w filename
для збереження відновленого буфера у файл з ім'ям файлу.
Помічник DiffOrig
Я додав команду DiffOrig до своєї, .vimrc
щоб вона завжди була доступною.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Оболонка сценарію
Я запускаю наступний скрипт у своїй оболонці, щоб знайти кожен файл swap у поточному дереві каталогів. Кожен файл swap потім використовується для відкриття Vim у «режимі відновлення», а потім видаляється після закриття Vim.
find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;
Для видалення файлу rm -i
потрібне підтвердження ( y
). Якщо ви впевненіші та хочете прискорити процес, це можна опустити.
:e #
трюк - хоч і не ідеальний, але все ж корисніший, ніж нинішня відповідь нижче. :-)