Aqui está um trecho para adicionar .vimrc
. Exclui todos os arquivos de troca associados ao buffer de arquivo atual e redefine 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()
Uma vez encontrado o problema, pode-se executar :DeleteFileSwaps
Isso é ótimo se combinar com :windo
ou :tabdo
comandos.
:tabdo DeleteFileSwaps
Mais detalhes : Um arquivo pode ter mais de um arquivo de troca. O motivo porque o arquivo de troca, com extensão de .swp
, ainda existe e vim
continuará criando novos por causa dele. 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 em que 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 se possui uma extensão
.swp
.
O trecho acima segue o mesmo processo, mas remove todos os arquivos de troca.
Espero que isto ajude.