Não entre em pânico!
A recuperação de arquivos é sempre segura, porque o vim nunca grava alterações até que você as grave. Portanto, recuperar-se de um arquivo de troca e fechar sem salvar não mudará nada.
Organize seus arquivos de troca:
Faça com que o vim coloque todos os seus arquivos de troca no mesmo local, para que você sempre saiba onde eles estão:
set directory^=$HOME/.vim/swap//
ou onde você preferir. O uso //
no final do nome do arquivo faz com que o vim use caminhos de arquivo absolutos para os nomes dos arquivos de troca, para que você não tenha colisões de nomes. Verifique se o diretório existe ou o vim não o usa (não o cria para você).
Nota: Isso funciona apenas em variáveis de ambiente, se você deseja usar uma variável vimscript, precisamos usar um pouco de :execute
mágica:
execute "set directory^=".my_vim_home_var."/swap//"
Diff as diferenças:
Ajuda do Vim sugere um comando muito útil para usar nesta situação: :DiffOrig
. Não é um comando vim padrão , portanto, copie a implementação :h :DiffOrig
para o seu vimrc. (também está $VIMRUNTIME/defaults.vim
se você tiver o vim8). Agora, você pode recuperar o arquivo e simplesmente executar o DiffOrig para obter um vimdiff do que mudou na versão não modificada.
Se você deseja comparar o conteúdo de vários arquivos de troca, recupere seu arquivo com cada arquivo de troca diferente e, em seguida, grave o resultado em arquivos temporários. Agora carregue os arquivos e execute :diffthis
em cada arquivo, faça as alterações desejadas, escreva de volta para o arquivo original e exclua os arquivos temporários e de troca.
Comandos úteis:
:swapname
: obtenha o nome que o vim está usando no arquivo de troca do buffer atual ( :h :swapname
)
:recover
: recupera o arquivo selecionado, o mesmo que quando você inicia o vim e pressiona R( :h :recover
)
Confira a ajuda:
Vim tem uma seção inteira do manual do usuário em recuperação: :usr_11.txt
ajuda de referência do Vim em arquivos de swap: :h swap-file
, h recovery
Ajuda sobre a opção de diretório (para definir o local do arquivo swap)::h 'directory'
Edit: Exemplo modificado para configuração de diretório, como apontado nos comentários de @B Layer