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