Где VIM (gvim/macvim) хранит файлы подкачки для несохраненных/безымянных буферов?

Где VIM (gvim/macvim) хранит файлы подкачки для несохраненных/безымянных буферов?

Где 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_гдеимя файла— это файл, который вы нашли в предыдущей инструкции.

Связанный контент