Не паникуйте!
Восстановление файлов всегда безопасно, потому что vim никогда не записывает никаких изменений, пока вы сами их не напишите. Поэтому восстановление из файла подкачки и последующее закрытие без сохранения ничего не изменит.
Организуйте свои файлы подкачки:
Получите vim, чтобы поместить все ваши файлы подкачки в одно и то же место, чтобы вы всегда знали, где они находятся:
set directory^=$HOME/.vim/swap//
или где вы предпочитаете. Использование //
в конце имени файла заставляет vim использовать абсолютные пути к файлам для имен файлов подкачки, чтобы избежать конфликтов имен. Убедитесь, что каталог существует, или vim не будет его использовать (он не создаст его для вас).
Примечание: это работает только с переменными окружения, если вы хотите использовать переменную vimscript, тогда нам нужно использовать :execute
магию:
execute "set directory^=".my_vim_home_var."/swap//"
Различаются различия:
Помощь Vim предполагает очень полезную команду для использования в этой ситуации: :DiffOrig
. Это не команда vim по умолчанию , поэтому скопируйте ее реализацию :h :DiffOrig
в ваш vimrc. (это также, $VIMRUNTIME/defaults.vim
если у вас есть Vim8). Теперь вы можете восстановить файл и просто запустить DiffOrig, чтобы получить vimdiff того, что изменилось по сравнению с неизмененной версией.
Если вы хотите сравнить содержимое нескольких файлов подкачки, восстановите файл с каждым другим файлом подкачки, а затем запишите результат во временные файлы. Теперь загрузите файлы и запустите :diffthis
каждый файл, внесите необходимые изменения, запишите исходный файл и удалите временные файлы и файлы подкачки.
Полезные команды:
:swapname
: получить имя, которое vim использует для файла подкачки для текущего буфера ( :h :swapname
)
:recover
: восстанавливает выбранный файл так же, как при запуске vim и нажатии R( :h :recover
)
Проверьте помощь:
Vim имеет целый раздел инструкции по восстановлению: :usr_11.txt
ссылочный помощи Vim на файлы подкачки: :h swap-file
, h recovery
справки по опции каталога (для установки местоположения файла подкачки)::h 'directory'
Редактировать: модифицированный пример для установки каталога, как указано в комментариях @B Layer