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

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

You may want to delete the .swp file now. 

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

Наверняка я что-то упускаю.

Несколько проще:

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

 vim filename 

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

 :e // no argument needed. It assumes the current buffer. 

… и выберите delete в этот раз.

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

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

Очистить ВСЕ файлы vim Swap в Dir:

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

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

Некоторое вдохновение и мысли пришло: https://groups.google.com/forum/#!topic/vim_use/JBHSs3kPPJU

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

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

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

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

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

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

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

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

 [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it 

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

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

Из описания:

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

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

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

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

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

 function! 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*')) " delete all except the current swap file for l:swap_file in l:swap_files if !empty(glob(l:swap_file)) && l:swap_file != l:current_swap_file call delete(l:swap_file) echo "swap file removed: ".l:swap_file endif endfor " Reset swap file extension to `.swp`. set swf! | set swf! echo "Reset swap file extension for file: ".expand('%') endfunction command! DeleteFileSwaps :call DeleteFileSwaps() 

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

 :tabdo DeleteFileSwaps 

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

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

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

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

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

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

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

Если вы этого не сделаете, вам нужно сделать это вручную.

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

Для поиска / поиска файла:

 find | grep ".searchRefineVertTabs.jsp.swp" 

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

 rm ./.searchRefineVertTabs.jsp.swp 

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

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

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

Будьте осторожны, хотя, хотя это более полное решение, оно выведет любые файлы изображений .svg и флэш-файлы .swf adobe. Вы можете изменить регулярное выражение, если работаете с этими файлами.

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

 rm -f .<filename>.<ext>.swp 

Пример:

 rm -f .rc.local.swp 
  • Как выйти из редактора Vim?
  • Советы по использованию Vim как Java IDE?
  • Vim: Как синхронизировать NERDTree с текущим открытым файлом пути к вкладке?
  • Vim не окрашивает конец строк при работе внутри экрана
  • Как восстановить исходный файл из .swp-файла?
  • Как перенаправить вывод ex команды в текущий буфер или файл?
  • Выравнивание длины строки работает корректно в консоли Vim, а не в графическом интерфейсе
  • vim change: функция x для удаления буфера вместо сохранения и выхода
  • VIM, показывающий «m» возле белого пространства на Cygwin
  • Как найти кодировку текущего буфера в vim?
  • Как найти строку с максимальным количеством столбцов / символов в Vim / gVim?
  • Interesting Posts

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

    В чем разница между max-device-width и max-width для мобильной сети?

    Поиск процесса, использующего определенный порт в Linux

    Сортировка 2D-массива в C ++ с использованием встроенных функций (или любого другого метода)?

    PowerShell: усовершенствования истории (readline)?

    Как заставить Chrome разрешить смешанный контент?

    Объекты Java JSON GSON.fromJson

    Возможно ли установить общий доступ к файлам Windows на Chromebook

    Как использовать ConcurrentLinkedQueue?

    «Ошибка: Ошибка AudioQueueStart» при повторном запуске afplay

    Не удалось получить значение свойства margin из результата getComputedStyle

    Почему мой счетчик Bash сбрасывается после цикла while

    Зарядные устройства USB-C: Безопасно ли заряжать телефон с электропитанием ноутбука?

    Географические границы штатов / провинций -> Google Maps Polygon

    Какова цель объявления типа int (x); или int (x) = 10;

    Давайте будем гением компьютера.