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

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

  Вы можете сейчас удалить файл .swp.  

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

Конечно, я что-то упускаю.


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

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

  vim filename  

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

 : e//аргумент не требуется.  Он принимает текущий буфер.  

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

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

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


Чтобы очистить ВСЕ файлы подкачки vim в каталоге:

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

  find.  -type f -name "* .sw [klmnop]" -delete  

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

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

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

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

       *. Sw [nop]  

    или даже

        *. sw?   

    было бы более тщательно.

    Первоначальный автор этого сообщения говорит,

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

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

      найти.  -type f  (-name ". *. s [av] [az]" -o -name ". *. sw [ap]" ) -delete  

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

  • Это может быть перебор. Как уже говорилось, он удалит все файлы, имена которых заканчиваются на .swk , .swl , .swm , .swn , .swo или .swp . Но, по-видимому, файлы подкачки vim обычно являются «точечными» файлами. Если вы редактируете hello.cpp , файл подкачки может быть . hello.cpp.swp . Как показано (но не объяснено) в ответе Рубля, безопаснее удалять только файлы, имена которых начинаются с точки; например, с помощью

      find.  -type f -name ". *. sw [klmnop]" -delete  

0


Введите ls -a , в котором перечислены ВСЕ файлы в каталоге

введите rm .whatever.your.swp и нажмите enter

Это так просто.

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

Помните, что изменения являются немедленными и постоянными так что будьте осторожны.

3


Кстати. некоторые плагины делают это автоматически: autoswap.vim

из описания:

  1. Файл уже открыт в другом Vim сеанс в другом окне?
  2. Если да, переключитесь на окно, в котором мы редактируем этот файл.
  3. В противном случае, если файл подкачки старше, чем файл, просто избавьтесь от него.
  4. В противном случае откройте файл только для чтения, чтобы мы могли его просмотреть и сохранить.

1


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

Просто сохраните, закройте и снова откройте тот же файл. Вам будет предложено (снова)

  [O] pen Read-Only, (E) dit в любом случае, (R) ecover, (Q) uit, (A)  bort, (D) удалите  

Теперь просто нажмите d 🙂

4


Vim, как и большинство команд Unix, является простым и явным, а не предполагающим и неявным.

Вы восстанавливаетесь с помощью (r). Если вам не нравится восстановление или оно повреждено, вы можете отказаться от него. Если вам это нравится, вы можете сохранить файл. Файл восстановления не удаляется для вас, потому что это не является явным и не будет правильным для 100% ситуаций.

Итак, вы (r) ecover, (w) rite и (q) uit, затем снова отредактируйте и выберите (d) elete или «rm .myfile.js.swp» и отредактируйте снова. Это быстро сделать и всегда, с точки зрения Vim, на 100% правильное поведение.

3


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

  функция!  DeleteFileSwaps () write let l: output = '' redir => l: output silent exec ': sw' redir END let l: current_swap_file = substitute (l: output, ' n', '', '') let l:  base = substitute (l: current_swap_file, ' v .  w + $', '', '') let l: swap_files = split (glob (l: base. '. s *')) "удалить все, кроме  текущий файл подкачки для l: swap_file в l: swap_files if! empty (glob (l: swap_file)) && l: swap_file! = l: current_swap_file call delete (l: swap_file) echo "файл подкачки удален:" .l: swap_file endif  endfor "Сбросить расширение файла подкачки на` .swp`.  установить swf!  |  установить swf!  echo "Сбросить расширение файла подкачки для файла:" .expand ('%') endfunctioncommand!  DeleteFileSwaps: вызовите DeleteFileSwaps ()  

После того, как вы столкнетесь с затруднительным положением, можно выполнить : DeleteFileSwaps . Это замечательно в сочетании с : windo или : tabdo .

 : tabdo DeleteFileSwaps  

Дополнительные сведения : файл может содержать более одного файла подкачки. Причина в том, что файл подкачки с расширением .swp все еще существует, и vim из-за него будет создавать новые. Чтобы узнать, существует ли .swp :

  • Открыв целевой файл в vim, выполните : sw , чтобы получить текущий файл подкачки.
  • Проверьте каталог, в котором находится текущий файл подкачки.
  • Затем проверьте, содержит ли каталог файл подкачки с именем открытого файла и имеет ли расширение .swp .

Приведенный выше фрагмент следует тому же процессу, но удаляет все файлы подкачки.

Надеюсь, это поможет.


Эти файлы раздражали для меня тоже, но я установил параметр в .vimrc — set noswapfile , чтобы vim не создавал его и вместо этого сохранял файлы в памяти.

3


Вот более полное регулярное выражение для очистки всех файлов подкачки vim на основе собственного файла gitignore Github для Vim

  $ find ./-type f  (-name ". * . s [av] [az]" -o -name ". * . sw [ap]"   ) -delete  

Однако будьте осторожны, хотя это более полное решение, оно удалит все файлы изображений .svg и файлы Adobe Flash .swf. Вы можете изменить регулярное выражение, если вы работаете с этими файлами.


Из руководства : h swap :

Вы можете увидеть имя текущего файла подкачки, используемого с помощью команды: : sw [apname]

1


если вас спросят, нажмите D , чтобы удалить файл подкачки текущего файла.

если нет, вам придется сделать это вручную.

один из альтернативных способов сделать это:

найти/найти файл:

  find |  grep ".searchRefineVertTabs.jsp.swp"  

, а затем удалите этот файл:

  rm ./.searchRefineVertTabs.jsp.  swp  

1


Я часто не вижу Параметр (D) Удалить . Я думаю, потому что я использую * nix, а файл .swp остался от какого-то сбитого или убитого процесса vim. Итак, если я просто хочу удалить все файлы .sw * после открытия моего файла, я выдам:

  vim my-file-  in-current-directory.txt  

затем нажмите (E) Все равно редактировать или (R) Восстановить

, а затем один раз в выпуске vim:

  :! rm.%. sw *  

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

  vim my/file/with  -really-long-name/in-a-directory-far-away.txt  

, затем (E) или (R) , затем

  :! rm%: p: h/.%: t. sw *  


  1. vi filename

  2. восстановить

  3. : w

  4. : e

  5. delete


Вы можете использовать,

   rm -f. .  .swp  

Пример:

  rm -f  .rc.local.swp  

2



Как удалить файл подкачки в Ubuntu?

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

Однако в статье в блоге ничего не написано об удалении, поэтому я попытался удалить его с помощью sudo rm -rf , но он получил ошибку Операция запрещена .

До сих пор я пробовал много ответов на то, как удалить файл с той же ошибкой, но в моем случае ничего не помогло :

  • https://unix.stackexchange.com/questions/370255/as-root-cannot-remove-file-under-tmp-operation-not-permitted
  • Смена владельца: «Операция запрещена» — даже с правами root!
  • https://unix.stackexchange.com/questions/29902/unable-to-delete-file -even-when-running-as-root

, которые включают:

  • изменение разрешений как для файла подкачки, так и для корневой каталог / ( hmod ugo + w. )
  • измените неизменяемый флаг как в файле подкачки, так и в / ( chattr -i -a. )
  • перезагрузить систему

Все они не работали. Интересно, как его удалить, но если это файл подкачки, как его удалить?

Результат free -h :

  общее количество использованных свободных общих буферов/доступных кеш-памяти Mem: 1,7 ГБ 101 МБ 405 МБ 1,2 МБ 1,2 ГБ 1,4 ГБ Обмен: 1,5 ГБ 234 МБ 1,3 ГБ  

Вывод команды free -h указывает на то, что используется своп — процесс свопинга все еще выполняется.

Введите команду

  sudo swapoff/path/to/swapfile/to/be/deleted  

Это отключит файл подкачки, и файл можно будет удалить в этот момент.

Обратите внимание, что если вы создали запись в /etc/fstab для файла подкачки, вы также должны удалить ее (или закомментировать ее добавив # в начале строки).

Оцените статью
clickpad.ru
Добавить комментарий