Могу ли я восстановить удаленный файл из .swp после автоматической перезагрузки?

864
Konrad Rudolph

Это связано, но не решается вопросом « Как восстановить исходный файл из файла .swp? ».

У меня было два недавно созданных файла a.txtи b.txtоткрытые в буферах. Активный буфер был b.txt, и я случайно удалил a.txt, а затем переключился на буфер a.txt. К сожалению, у меня также есть, set autoreadи set autowrite, перезагрузив буфер, я опустошил его.

Я попытался просто отменить удаление в Vim, нажав u, но безрезультатно. Есть ли способ восстановить содержимое удаленного файла .a.txt.swp? Решение связанного вопроса здесь не работает, по-видимому, из-за autowrite: файл не восстанавливается.

На случай, если это важно, у меня тоже есть set undofile. Кроме того, поскольку файл был заново создан в этом сеансе Vim, .swpфайл, в принципе, должен содержать полный набор изменений, внесенных в файл.

1
Неправильно полагать, что полное содержимое файла существует в файле `.swp`. Печальная реальность такова, что это не так. Чтобы немного упростить, файл Vim `.swp` содержит только необходимую информацию, чтобы" перестроить "изменения в файле с момента последней записи. Если исходный файл исчез, недостаточно информации для того, чтобы файл `.swp` был эффективным. Heptite 10 лет назад 0
@Heptite Это то, что я также предположил бы, но, похоже, это неправильно: в связанном вопросе файла `.swp` * достаточно *, чтобы получить удаленный файл. Единственная разница в том, что у меня `auto ` active. Кроме того, поскольку у меня бесконечно активно отменено, нет никакой причины * в принципе *, почему мой файл не должен быть восстановим: состояние файла до последней операции (= удаление) должно было сохраняться в файле отмены. Konrad Rudolph 10 лет назад 0
Есть только один ответ, который предполагает это, и это противоречит самому себе. Это должно быть перефразировано. И файл отмены также не содержит всего содержимого файла. Вы можете восстановить некоторые данные, создав пустой файл со старым именем файла и «восстановив» его, но вы никогда не получите все это. Heptite 10 лет назад 0
@ Hepite Спасибо за объяснение. Позор. Что ж, моя система на самом деле создает обычные резервные копии всех файлов, мне просто не повезло, чтобы создать, а затем удалить файл внутри часового окна, пока не будет выполнено обновление. ;-) Konrad Rudolph 10 лет назад 0

1 ответ на вопрос

2
Christian Brabandt

Возможно, вы сможете восстановить содержимое из файла. Но вам нужно перекомпилировать Vim с исправленным патчем.