Aqui está um snippet para adicionar em .vimrc
. Exclui todos os arquivos de troca que são
associado ao buffer de arquivo atual e redefinir a extensão de troca.
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()
Depois do encontro com a situação, pode-se executar :DeleteFileSwaps
Isso é ótimo se combinar com os comandos :windo
ou :tabdo
.
:tabdo DeleteFileSwaps
Mais detalhes : Um arquivo pode ter mais de um arquivo de troca. A razão porque
o arquivo de troca, com extensão de .swp
, ainda existe e vim
continuará criando
novos por causa disso. Para descobrir se .swp
existe:
- Com o arquivo de destino aberto no vim, execute
:sw
para obter o arquivo de troca atual.
- Verifique o diretório no qual o arquivo de troca atual está contido.
- Em seguida, verifique se o diretório contém um arquivo de troca com o nome do arquivo aberto
e tem uma extensão de
.swp
.
O snippet acima segue o mesmo processo, mas remove todos os arquivos de troca.
Espero que isso ajude.