Когда процесс Vim внезапно завершается (например, сбой системы), он оставляет файл SWP. Открытие исходного файла в Vim позже дает возможность восстановления. Большую часть времени восстановленный файл совпадает с сохраненным файлом, потому что у меня есть привычка сохранять часто. Тогда Вим говорит:
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Ну, конечно, я хочу удалить файл .swp сейчас!
Как я могу заставить Vim всегда автоматически удалять SWP-файл в этом случае?
Кажется, что для этого нет встроенных настроек, поэтому я ищу подходящее событие автокоманды.
Один из способов, который я нашел, состоит в том, чтобы :e #
после сообщения снова появиться параметры подкачки, а затем я могу «Удалить его». Но мне не нужно делать эти дополнительные шаги каждый раз.
:e #
трюк, хотя и не идеальный, но все же более полезный, чем текущий ответ ниже. :-)Ответы:
Примечание: вы не сказали, какую операционную систему вы используете. Следующее работает с оболочкой Unix, но если вы работаете в Windows, вы можете загрузить обычную Cygwin или другую оболочку.
Раньше я делал то же самое, что и вы, запускаю,
:e
чтобы заново открыть тот же файл, чтобы получить возможность удалить файл восстановления. После сбоя или неожиданного перезапуска компьютера я очищаю все остаточные файлы восстановления Vim, запустивvim -r
файлы подкачки и разрешив продолжить восстановление.Когда файлы не изменились
Если файлы не изменились, я хочу немедленно удалить файл восстановления. Было бы здорово, если бы Vim мог сделать это автоматически, но, к сожалению, это не так.
Когда файлы изменились
Если файлы изменились, я запускаю
DiffOrig
команду, чтобы сравнить различия между исходной и восстановленной версиями. Если меня устраивают изменения в файле восстановления, я выхожу, сохраняя файлы с помощью:x
команды. Если нет, я отменяю восстановленные изменения, выходя из:q!
. Если файл восстановления не связан с сохраненным файлом, например,.swp
я обычно использую,:w filename
чтобы сохранить восстановленный буфер в файл с именем файла.DiffOrig помощник
Я добавил DiffOrig команду к моему ,
.vimrc
так что он всегда доступен.Сценарий оболочки
Я запускаю следующий скрипт в своей оболочке, чтобы найти каждый файл подкачки в текущем дереве каталогов. Каждый файл подкачки затем используется для открытия Vim в «режиме восстановления», а затем удаляется после закрытия Vim.
rm -i
Вариант требует подтверждений (y
) для удаления файла. Если вы более уверены в себе и хотите ускорить процесс, это можно пропустить.источник