50

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

Предыстория: В течение полуинтенсивного семинара я делал записи в безымянном / несохраненном буфере MacVim, когда у MacBook кончился сок и он выключился из ниоткуда (Он не спал / не спал, как обычно).

Вопрос: Кто-нибудь знает, есть ли вероятность того, что несохраненная работа могла быть сохранена в файл подкачки (.swp) или тому подобное, который можно было бы восстановить?

Сведения о системе: В частности, это произошло с использованием MacVim на Mac OS X 10.5.8 (но интересны также возможные подсказки по восстановлению для других версий). Я еще не перезагружал MacVim в случае, если это инициирует процесс очистки.

4 ответа4

55

Запустите vim и попробуйте:

:recover <filename>

Если у файла никогда не было имени, то просто:

:recover

Это ваша лучшая ставка. Для получения дополнительной информации о файлах подкачки и восстановлении см .:

:help usr_11

Что касается файлов подкачки, обычно они сохраняются в том же каталоге, что и редактируемый файл, но с. добавили начало, чтобы сделать его скрытым, и .swp в конце, но их можно переместить в другое место, например:

:set directory=~/vimswap

или похожие.

Увидеть:

:help swap

Для всех деталей.

Однако файл подкачки vim отличается от отредактированного буфера, поэтому обязательно ознакомьтесь с тем, что можно сделать для восстановления.


РЕДАКТИРОВАТЬ: комментарии, отвечающие на вопрос:

[…] Похоже, что в вашем текущем рабочем каталоге, ~/tmp, /var /tmp и /tmp, есть файлы подкачки, и в моем случае у меня всегда установлен текущий рабочий каталог, и именно там он был сохранен. - dsclementsen 5 октября 2010 года в 1:42

также обязательно ознакомьтесь с командной строкой vim -r arg. Это распечатает все найденные файлы подкачки и где они находятся. Кроме того, в нем будет много дополнительной информации, такой как дата / изменение / имя пользователя / и т.д. - Neg_EV 5 октября 2010 в 13:49

2

Я работаю на Windows 10 и :recover не нашел файл подкачки. vim -r перечислил файл подкачки из последнего сеанса редактирования (также никогда не сохраненный) с именем _.swp. Восстановление было возможно с помощью :recover _ .

1

Ответ: повсюду. Трюк в том, чтобы найти правильный. Некоторые находятся в вашем каталоге /tmp, но многие находятся где-то в вашем домашнем каталоге.

Возможно, есть более эффективные способы сделать это, но у меня сработало следующее, когда я потерял безымянный файл (на MacBook):

в домашнем каталоге найдите файлы резервных копий (это займет несколько секунд и, возможно, будет сделано умнее):

find ./ -name ".s*" > findVimBackups.txt

открыть файл:

vim findVimBackups.txt

удалите имена файлов, которые не предназначены для резервного копирования безымянных файлов:

:g!/\/\.s..$/d
:g/svn/d

Теперь я вижу список мест неназванных файлов резервных копий. В каждом из этих каталогов я запускаю следующие, пока не найду файл (ы) с сегодняшнего дня:

ls -ltra <directory>

Я захожу в правильный каталог и открываю vim и набираю: recovery и выбираю правильную резервную копию.

0

Кажется, что они окажутся в вашем рабочем каталоге :pwd Это где бы вы ни открывали vim, или вы могли бы установить его с помощью :cd или аналогичного.

Файлы подкачки для безымянных буферов, кажется, просто помещаются туда без имени файла, так что вы получите .swp .swn .swo и т. д. Я обнаружил это не когда пытался что-то восстановить, а когда мой файл игнорирования hg не покрывал достаточно разных суффиксов!

Я догадался, что причиной было множество неназванных буферов с изменениями, и удаление этих буферов привело к исчезновению тайных файлов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .