Respostas:
vim -r .swp
Isso entra no modo de recuperação e fornece mais informações. Eu acho que é isso que você quer.
.swX
-files são deixados para trás se uma sessão com um arquivo não salvo for morta / travar / outra coisa ruim acontecer. Eles também estão presentes durante o tempo em que um buffer não salvo é aberto em uma sessão do Vim. vim -r
lê esses arquivos temporários e recria o conteúdo. Depois de recuperá-lo, salve-o como de costume, por exemplo :w newfilename
.
Você não precisa ter o arquivo original para recuperar o arquivo .swp. Basta abrir o arquivo como se ele existisse. O vim procurará o arquivo com a extensão .swp e se oferecerá para recuperá-lo.
por exemplo:
$ ls -a
. .. .test.txt.swp
$ vim test.txt
[...]
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
Basta pressionar R para recuperá-lo e: wq o arquivo
Editar: Observe que o arquivo .swp contém apenas as alterações feitas no arquivo (consulte o comentário). Isso significa que você precisará buscar uma cópia recente do arquivo do backup e usar o vim para recuperar as alterações mais recentes. Se você não possui uma cópia de segurança do arquivo, está sem sorte.
The original file is no longer needed for recovery.
:preserve
e :set cpoptions=...&
deixa um arquivo .swp e .swo no diretório e oferece a recuperação de qualquer um. Usando vim -r <file>
você pode escolher entre .swp e .swo. Edições adicionais geram .swn, .swm etc., que parecem ser a soma parcial de swaps até esse ponto. Você pode reverter para a versão que você gosta e editar (~ = fork) ou salvar (~ = stash). Eventualmente, você pode tarar os arquivos de troca, daemonizar seus backups, etc. Eu posso estar errado sobre os detalhes quando se trata de arquivos maiores - não tenho certeza de como isso afeta os arquivos de troca extras - veja abaixo.
Abra o arquivo original usando o vim e escolha a opção de recuperação.
Depois de ler os comentários de Vegar Westerlund e Heptite, eu queria saber em que momento o vim precisa do arquivo original (ou de um backup) para se recuperar de um arquivo .swp. Aqui está o que fez:
Abri um arquivo de 975 linhas, editei-o na linha 949 (criando um .swp
arquivo) e encerrei o processo, depois excluí o original. $ vim Original_File
perguntou se eu queria me recuperar do .swp »> yes; apenas as primeiras 68 linhas e as últimas 34 linhas (começando 8 linhas acima da minha edição) foram realmente recuperadas.
Repeti o teste com arquivos menores: de 20 a 200 linhas, o arquivo .swp continha 100% do conteúdo original . Mas em 300 linhas, apenas as primeiras 68 e 18 últimas linhas (começando 2 linhas acima da minha edição) foram incluídas no arquivo .swp.
Como conclusão, é bom saber que o vim sempre salva o "cabeçalho" e o "fundo" do arquivo nos arquivos .swp. Talvez haja uma configuração para controlar quantas linhas um .swp deve conter?