Удалить своп файл vim

Обновлено: 07.07.2024

Иногда Vim падает и оставляет мне файл подкачки. Это потрясающе. Затем я открываю файл, который редактировал, и Vim спрашивает меня, хочу ли я восстановить. Да, спасибо. Когда это будет сделано, Вим говорит мне,

Почему, да, я делаю. Как мне это сделать? Я подумал, что он просто снова начнет использовать старый файл подкачки в качестве файла подкачки и очистит его при выходе, но это не так. Он создает новый, очищает его, и когда я снова открываю файл, он снова предлагает мне восстановиться после первого.

Конечно, я что-то упустил.

Немного более простой способ:

Из эмулятора терминала:

Затем выберите восстановить , и если вы хотите удалить своп вы пишете (сохранить) , а затем сделать это изнутри Vim:

. и выберите удалить на этот раз.

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

Есть также соответствующие советы по этому вопросу о переполнении стека (где я нашел этот совет).

У меня нет delete выбора, есть только: [O] pen (E) dit (R) ecover (Q) uit (A) bort, что мне делать? @Arne: Из моего опыта это обычно означает, что файл в данный момент открывается в другом экземпляре vim? Опция [D] elete появилась только после того, как я обновился до Vim 7.4 @ У меня была такая же проблема. Но через некоторое время, примерно через час, я перезапустил vim, и опция была доступна. ПК не был перезагружен в то время. vim может подумать, что запущен другой процесс vim. Вот почему это не показывает вариант. Для тех, кто говорит, что не видит (D)elete выбора, смотрите :help swap-exists ; котировка On Unix this choice is only offered when the process that created the swap file does not appear to be running. Т.е. , возможно , у вас есть еще один ВИМ запущенного процесса , который вызывает этот параметр , чтобы скрыть. Это также может объяснить, почему у вас есть swp файл в первую очередь!

Чтобы очистить все файлы vim Swap в каталоге:

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

Некоторое вдохновение и мысли пришли из удаления ненужных .swp файлов в группах Google. Это удалит все файлы , чьи имена заканчиваются .swk , .swl , .swm , .swn , .swo , или .swp в текущем дереве каталогов.

Это может быть не то, что вы хотите, по нескольким причинам:

    Как уже говорилось, он ищет текущее дерево каталогов ; т.е. текущий каталог и все подкаталоги, рекурсивно. Это выходит за рамки того, о чем просит вопрос, и может считаться излишним.

Как уже говорилось, он будет удалять все файлы , чьи имена заканчиваются .swk , .swl , .swm , .swn , .swo , или .swp , и не только .swp . Гэри Джонсон говорит ,

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

или даже

будет более тщательным

'klmnop' может быть излишним, но это обычно гарантирует, что я получу их все.

С другой стороны, это может быть недостаточно. рубль подсказывает

который соответствует всем (строчным) трехбуквенным расширениям в диапазоне от .saa до .swp . Он добавляет: «Будьте осторожны, хотя это более полное решение, оно удалит любые файлы изображений .svg и файлы .swf Adobe Flash. Вы можете изменить регулярное выражение , если вы работаете с этими файлами.»Это также соответствует .sav , .snd (звуковые данные) .sql , .src , .srt (SubRip видео формат субтитров), и многие другие широко распространенные расширения.

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

Что касается восстановления, это может быть проблемой в этом одном экземпляре, поскольку «заметки» новее, чем связанный с ним связанный с ним файл Vim .swp, но вы все равно можете попробовать. Просто убедитесь, что вы сначала скопировали файл заметок в резервную папку.

Было бы неплохо прочитать « :help recover.txt ».

Если на этом этапе вы по-прежнему абсолютно уверены, что не позволяете Vim создавать .swp-файлы, чтобы вы могли восстановиться после сбоев и других связанных с ними проблем, вы можете поставить « set noswapfile "в

Любой файл, который вы редактируете с помощью vim , будет иметь соответствующий файл подкачки при редактировании , который vim используется для отслеживания изменений. Когда вы прекратите редактирование файла, vim автоматически отменит соответствующий файл подкачки. Следовательно, наличие файла подкачки и попытка написать надпись на исходный файл должны быть причиной для рассмотрения и принятия соответствующих мер.

Самое распространенное замечание: «ЛИНИИ НЕ ПРОПУСТИТЬ». Это означает, что Vim не может прочитать текст из исходного файла. Это может произойти, если система разбилась, а части исходного файла не былисохранены.

Тем не менее, я никогда не видел те метки q , поэтому это должно быть действительно редкое событие .

Затем сохраните (т. е. напишите) содержимое другого файла (обычно я просто добавляю «2» в конец исходного имени файла):

Затем принудительно завершите сеанс vim :

Затем сравните два файла:

Если vim ничего не возвращает , это означает, что нет никакой разницы, и это безопасно удалить как файл подкачки, так и второй файл:

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

Если vim возвращает что-то , это означает, что исходный файл (через файл подкачки) имел изменения что благодаря восстановлению были сохранены во второй файл.

Так как эти изменения зафиксированы во втором файле, вы можете удалить файл подкачки и перезаписать исходный файл вторым:

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

Это похоже на большую работу, но как только вы привыкаете к рабочему процессу, он занимает максимум 20 секунд.

Чтобы сделать это все время, просто поставьте

в файле .bashrc или .bash_aliases

, если вам когда-либо понадобится запустить vim без опции -n, просто запустите

vim удалит сгенерированный .swp-файл при его правильном выходе.

Это случилось со мной, когда мой терминал неожиданно закрыл мою связь с vi open.

К счастью, у меня не было никаких изменений.

Чтобы удалить это предупреждение и отказаться от обмена:

  1. Найти идентификатор процесса , глядя на process ID: 2251 (still running) , в этом случае это 2251
  2. Проверить , вы получили правильный идентификатор ps 2251
  3. Убить процесс с помощью kill 2251

Помните файлы подкачки, чтобы защитить вас, и вы не должны полностью отключать их.

Как я могу избавиться от раздражающих предупреждений при открытии файла с файлом .swp?

Это также значение по умолчанию при запуске режима POSIX.

Однако не делать этого : это как удаление подушек безопасности вашего автомобиля для повышения эффективности использования топлива. В конечном итоге вы потратите больше времени на восстановление, чем когда-либо отвечали на вопрос.

Я решил эту проблему тремя простыми шагами:

1 :) Запустите «ls -la», где файл существует, чтобы вы могли просматривать .swp-файл для него.

Каждый раз, когда я прекращаю сеанс в vim, теряя связь, я полон dred (и все же я продолжаю использовать vim . каким я должен быть мазохистом), потому что когда я снова открываю свои файлы, куча свопов файлы ждут, чтобы попытаться уничтожить мою работу. Каковы лучшие практики для работы с файлами подкачки vim? Вы просто выбираете самый новый? Если файл работает так, как вы ожидаете, вы просто удаляете файлы подкачки? Как вы от них избавляетесь?

Файлы подкачки существуют для защиты вашей работы. Рассмотрите возможность использования экрана GNU. Я не хочу отключать функциональность; это раздражает, но, как вы говорите, полезно. Я просто хочу знать, как правильно его использовать. Если вы используете tmux, вам не нужно беспокоиться о потере соединения: просто подключитесь к сеансу при повторном подключении. Вы также можете быть заинтересованы в mosh и плагине @ ChristianBrabandt's Recover .

Не паникуйте!

Восстановление файлов всегда безопасно, потому что 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

Как избавиться от надоедливых предупреждений при открытии файла с файлом .swp? Или как вообще не генерировать файлы .swp? Пример предупреждения:

Любой файл, который вы редактируете, vim будет иметь соответствующий файл подкачки во время редактирования , который будет vim использоваться для отслеживания изменений. При выходе из редактирования файла vim автоматически удаляется соответствующий файл подкачки. Следовательно, наличие файла подкачки и ваша попытка перезаписать исходный файл должны стать причиной для рассмотрения и принятия соответствующих мер.

Два сценария, представленные в message ( E325: ATTENTION Found a swap file ), на самом деле довольно распространены: (1) либо другая vim программа редактирует тот же файл, который вы пытаетесь редактировать (это может быть другой человек - в этом случае это действительно не имеет смысла) просто слепо удалить файл подкачки - или это может быть вы в другом окне терминала или вкладке), или (2) произошел vim сбой предыдущего сеанса (чаще всего это происходит при удаленном редактировании и разрыве сетевого сеанса - в котором если сессия vim не была завершена нормально, а .swp файл остался позади, другой пример этого второго сценария - это то, что вы случайно закрыли окно терминала или вкладку, в которой был активный или фоновый vim сеанс).

введите описание изображения здесь

Если я понимаю, что редактирую в другом месте и могу вернуться к нему , я нажимаю q клавишу (Q)uit этого дополнительного сеанса и возвращаюсь к редактированию через исходный vim сеанс.

Иногда, если я не совсем уверен, я (Q)uit запускаю jobs и проверяю, работаю ли я vim в том же терминале; если ничего не происходит, я запускаю, ps -ef | grep vim чтобы проверить, работаю ли я в vim другом месте (то есть в другом окне терминала или вкладке). Дело в том, что я всегда пытаюсь возобновить редактирование через исходную vim сессию.

Если я уверен, что не могу вернуться к исходному сеансу редактирования, и мне все еще предлагаются следующие опции, тогда я нажимаю r на (R)ecover .

Если, с другой стороны, я больше не сталкиваюсь с этими параметрами, поскольку я нахожусь в приглашении оболочки, тогда я запускаю vim эту -r опцию следующим образом:

В любом случае нажмите ENTER для продолжения, и вы увидите свой файл.

Наиболее распространенным замечанием является «. пропущенные линии». Это означает, что Vim не может прочитать текст из исходного файла. Это может произойти, если система потерпела крах, и части исходного файла не были сохранены.

Тем не менее, я никогда не видел эти . отметки, так что это должно быть действительно редким явлением.

Затем сохраните (т.е. запишите) содержимое в другой файл (обычно я просто добавляю «2» к концу исходного имени файла):

Затем принудительно выйдите из этой vim сессии:

Далее сравните два файла:

Если diff ничего не возвращается , это означает, что разницы нет, и можно безопасно удалить как файл подкачки, так и второй файл:

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

Если что- diff то возвращает , это означает, что исходный файл (через файл подкачки) имел изменения, которые, благодаря восстановлению, были сохранены во второй файл.

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

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

Это кажется большой работой, но как только вы привыкнете к рабочему процессу, это займет максимум 20 секунд.

Читайте также: