Где VIM (gvim/macvim) хранит файлы подкачки для несохраненных/безымянных буферов? (Если он вообще это делает).
Фон: Во время полуинтенсивного семинара я делал заметки в безымянном/несохраненном буфере MacVim, когда у MacBook закончился заряд батареи, и он внезапно выключился (он не перешел в режим сна/гибернации, как это обычно бывает).
Вопрос: Кто-нибудь знает, есть ли вероятность, что несохраненная работа могла быть сохранена в файле подкачки (.swp) или чем-то подобном, и ее можно восстановить?
Подробности системы: В частности, это произошло при использовании MacVim на Mac OS X 10.5.8 (но возможные подсказки по восстановлению для других версий также представляют интерес). Я пока не перезапускал MacVim на случай, если это запустит процесс очистки.
решение1
Запустите vim и попробуйте:
:recover <filename>
Если у файла никогда не было имени, то просто:
:recover
Это ваш лучший выбор. Подробнее о файлах подкачки и восстановлении см.:
:help usr_11
Что касается файлов подкачки, то обычно они сохраняются в том же каталоге, что и редактируемый файл, но с добавлением . в начале, чтобы сделать его скрытым, и .swp в конце, но их можно переместить в другое место, например:
:set directory=~/vimswap
или похожие.
Видеть:
:help swap
Для получения подробной информации.
Однако файл подкачки vim — это не то же самое, что отредактированный буфер, поэтому обязательно прочтите выше, что можно сделать для восстановления.
РЕДАКТИРОВАТЬ: комментарии, отвечающие на вопрос:
[…] Похоже, он ищет файлы подкачки в вашем текущем рабочем каталоге, ~/tmp, /var/tmp и /tmp, а в моем случае у меня всегда установлен текущий рабочий каталог, и именно там он сохраняется.– dsclementsen 5 окт. '10 в 1:42
также, обязательно проверьте аргумент командной строки vim -r. Это выведет все найденные файлы подкачки и где они находятся. Кроме того, там будет много дополнительной информации, такой как дата/изменение/имя пользователя/и т. д...– Neg_EV 5 окт. '10 в 13:49
решение2
Я работаю на Windows 10 и :recover
не нашел файл подкачки. vim -r
перечислил файл подкачки из последнего сеанса редактирования (также не сохраненный) с именем _.swp. Восстановление было возможно с помощью :recover _
.
решение3
Ответ: везде. Хитрость в том, чтобы найти правильный. Некоторые находятся в вашем каталоге /tmp, но многие из них находятся где-то в вашем домашнем каталоге.
Возможно, есть более эффективные способы сделать это, но мне помогло следующее, когда я потерял безымянный файл (на MacBook):
в домашнем каталоге найдите файлы резервных копий (это займет несколько секунд и, вероятно, можно сделать умнее):
find ./ -name ".s*" > findVimBackups.txt
открыть файл:
vim findVimBackups.txt
удалите имена файлов, которые не предназначены для резервного копирования безымянных файлов:
:g!/\/\.s..$/d
:g/svn/d
Теперь я вижу список местоположений неназванных резервных файлов. В каждом из этих каталогов я запускаю следующее, пока не найду файл(ы) с сегодняшнего дня:
ls -ltra <directory>
Я перехожу в нужный каталог, открываю vim, набираю :recover и выбираю нужную резервную копию.
решение4
Мне удалось восстановить свой файл на компьютере с Win 10 следующим образом:
Перейдите в каталог, в котором вы последний раз открывали vim. Для меня это было через ярлык vim на панели задач win 10. Щелкните правой кнопкой мыши по значку vim, щелкните правой кнопкой мыши еще раз по ярлыку vim и выберите «Свойства». Появится диалоговое окно. Значение в поле «Запустить в:» в этом диалоговом окне — это то место, где я фактически последний раз открывал vim. Для меня это значение было %HOMEDRIVE%%HOMEPATH%
. Перейдите в командную консоль dos и вызовите команды echo %HOMEDRIVE%
и , echo %HOMEPATH%
чтобы определить, где это находится.
Проверьте даты последнего изменения всех файлов _.s* в этом каталоге. Найдите файл с датой последнего изменения, которая совпадает с датой последнего открытия файла.
Откройте vim. Введите :recover _filename_
гдеимя файла— это файл, который вы нашли в предыдущей инструкции.