Ось фрагмент, який потрібно додати .vimrc
. Він видаляє всі файли swap, які пов'язані з поточним буфером файлів, та скидає розширення swap.
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
Додаткові відомості : Файл може мати більше одного файлу своп. Причина в тому, що файл swap, з розширенням .swp
, все ще існує і vim
завдяки ньому буде створювати нові. Щоб дізнатись, чи .swp
існують:
- З цільовим файлом, відкритим у vim, виконайте,
:sw
щоб отримати поточний файл swap.
- Перевірте каталог, в якому міститься поточний файл swap.
- Потім перевірте, чи каталог містить файл swap з іменем відкритого файлу і має розширення
.swp
.
Розташований вище фрагмент слід за тим самим процесом, але видаліть усі файли підкачки.
Сподіваюся, це допомагає.