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


52

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

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

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

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


1
Пояснение: Под неспасенным я имею в виду никогда не спасенный. Файл был создан нажатием клавиши Command-T (я думаю, что эквивалентен: tabe), то есть новый безымянный буфер открывается в новой вкладке. (Я бы обычно делал ': sav somefilename' на более позднем этапе.
Давур

Не имеет значения Смотрите дополнения к моему ответу.
безумно

Ответы:


60

Запустите 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


Это не поможет. Под неспасенным я имею в виду никогда не спасенный. То есть я открыл новый буфер с помощью: tabe или (Command + T). Итак, мы говорим о несохраненном / неназванном буфере. Есть ли место по умолчанию, где хранится эта несохраненная работа?
Давур

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

1
Это не так, как я могу сказать. Я только что проверил, убив vim извне при редактировании нового файла. Но когда я бежал recoverбез аргументов, это позволяло мне выбирать даже из некоторых старых сессий. В любом случае, файл .swp для неповрежденного буфера, вероятно, находится в / tmp, но это будет где-то еще, в зависимости от того, есть ли у вас set directory= <something>.
безумно

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

1
Мне пришлось использовать команду :recover!для восстановления моего несохраненного файла.

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 ignore недостаточно покрывал разные суффиксы!

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.