Каждый раз, когда я прекращаю сеанс в vim, теряя связь, я полон dred (и все же я продолжаю использовать vim ... каким я должен быть мазохистом), потому что когда я снова открываю свои файлы, куча свопов файлы ждут, чтобы попытаться уничтожить мою работу. Каковы лучшие практики для работы с файлами подкачки vim? Вы просто выбираете самый новый? Если файл работает так, как вы ожидаете, вы просто удаляете файлы подкачки? Как вы от них избавляетесь?
14
Ответы:
Не паникуйте!
Восстановление файлов всегда безопасно, потому что vim никогда не записывает никаких изменений, пока вы сами их не напишите. Поэтому восстановление из файла подкачки и последующее закрытие без сохранения ничего не изменит.
Организуйте свои файлы подкачки:
Получите vim, чтобы поместить все ваши файлы подкачки в одно и то же место, чтобы вы всегда знали, где они находятся:
или где вы предпочитаете. Использование
//
в конце имени файла заставляет vim использовать абсолютные пути к файлам для имен файлов подкачки, чтобы избежать конфликтов имен. Убедитесь, что каталог существует, или vim не будет его использовать (он не создаст его для вас).Примечание: это работает только с переменными окружения, если вы хотите использовать переменную vimscript, тогда нам нужно использовать
:execute
магию:Различаются различия:
Помощь Vim предполагает очень полезную команду для использования в этой ситуации:
:DiffOrig
. Это не команда vim по умолчанию , поэтому скопируйте ее реализацию:h :DiffOrig
в ваш vimrc. (это также,$VIMRUNTIME/defaults.vim
если у вас есть Vim8). Теперь вы можете восстановить файл и просто запустить DiffOrig, чтобы получить vimdiff того, что изменилось по сравнению с неизмененной версией.Если вы хотите сравнить содержимое нескольких файлов подкачки, восстановите файл с каждым другим файлом подкачки, а затем запишите результат во временные файлы. Теперь загрузите файлы и запустите
:diffthis
каждый файл, внесите необходимые изменения, запишите исходный файл и удалите временные файлы и файлы подкачки.Полезные команды:
:swapname
: получить имя, которое vim использует для файла подкачки для текущего буфера (:h :swapname
):recover
: восстанавливает выбранный файл так же, как при запуске vim и нажатии R(:h :recover
)Проверьте помощь:
Vim имеет целый раздел инструкции по восстановлению:
:usr_11.txt
ссылочный помощи Vim на файлы подкачки:
:h swap-file
,h recovery
справки по опции каталога (для установки местоположения файла подкачки):
:h 'directory'
Редактировать: модифицированный пример для установки каталога, как указано в комментариях @B Layer
источник
exec
...set directory^=$HOME/.vim/swap//
работает нормально, если$HOME
является инициализированной переменной среды. См:h expand-env
. Также работает сdictionary
,undodir
и,backupdir
чтобы назвать несколько.Лично я отключил файлы подкачки и резервных копий, так как он имеет тенденцию создавать файлы подкачки и файлы резервных копий везде и часто создает конфликты. Постоянная отмена Vim стала намного более надежной и безошибочной.
В настоящее время Vim имеет постоянную отмену, это гораздо более точный метод резервного копирования. Каждый раз, когда вы нажимаете Esc, текущее состояние файла фиксируется.
Вы можете использовать
:undolist
или плагины, такие как Gundo , или отменить дерево, чтобы просмотреть историю отмен.Чтобы использовать vim таким образом:
В оболочке:
В Vim
Чтобы отключить файлы подкачки:
:set noswapfile
источник
'writebackup'
решает еще одну проблему). Включение постоянной отмены не поможет в случае сбоя компьютера. Вы можете утверждать, что файлы подкачки не нужны по другим причинам (стабильность современных ОС, наличие ИБП), но вы не сделали этого в этом ответе. 2. настройка'undodir'
не включает постоянную отмену! Вы должны установить'undofile'
для этого