Hier is een stukje om toe te voegen in .vimrc
. Het verwijdert alle swap bestanden die geassocieerd zijn met de huidige bestandsbuffer en reset swap extensie.
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()
Als men eenmaal in aanraking komt met de situatie, kan men :DeleteFileSwaps
uitvoeren Dit is geweldig als het gecombineerd wordt met :windo
of :tabdo
commando’s.
:tabdo DeleteFileSwaps
Verdergaande details : Een bestand kan meer dan 1 wisselbestand hebben. De reden hiervoor is dat het wisselbestand, met uitbreiding van .swp
, nog steeds bestaat en vim
hierdoor steeds nieuwe zal blijven aanmaken. Om te weten te komen of .swp
bestaat:
- Met het doelbestand open in vim, voer
:sw
uit om het huidige wisselbestand te krijgen.
- Controleer de map waarin het huidige wisselbestand zich bevindt.
- Controleer vervolgens of de map een wisselbestand bevat met de naam van het geopende bestand en een extensie van
.swp
heeft.
Het bovenstaande fragment volgt hetzelfde proces, maar verwijder alle wisselbestanden.
Hoop dat dit helpt.