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 -rlê esses arquivos temporários e recria o conteúdo. Depois de recuperá-lo, salve-o como de costume, por exemplo :w newfilename.
Precisamente o que eu estava procurando. Para qualquer outra pessoa, é assim que você recupera arquivos ainda não salvos . Os métodos acima funcionam bem se um arquivo já existe, mas você não pode abrir um arquivo sem nome.
Eric Hu
17
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.
Você definitivamente precisa ter o arquivo original, sem ele os dados no arquivo .swp são inúteis. Veja ": help swap-file". Há situações em que parece funcionar sem o arquivo original, mas o arquivo .swp armazena apenas as informações alteradas e requer algum ponto de partida para aplicar essas informações durante a recuperação.
Heptite 28/10/10
Você está certo, é claro. Na verdade, eu não sabia disso sobre o vim. Mas é lógico, pois armazenar uma cópia completa do arquivo original seria um grande desperdício. A resposta é: Recupere seu arquivo do backup e use o vim para recuperar as últimas modificações.
Vegar Westerlund
Armazenar o arquivo inteiro em um único swp seria um desperdício, sim, mas vejo um valor potencial na acumulação de arquivos swp (quando ativado). Pelo mesmo motivo, você edita via diff e corrige o original apenas no salvamento explícito, isso faz sentido para mim. se você puder encenar uma sequência de diferenças, gere uma soma parcial (datas anteriores a hoje -> noturnas; noturnas + hoje = atuais) etc. Encontrei ': pre [serve] `no manuel, acho que funciona dessa maneira. De qualquer forma, a linha mais importante é:The original file is no longer needed for recovery.
John P
Parece que funciona - :preservee :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.
John P #
(Continuação) - o buffer carrega os sinalizadores e é o buffer que produz os arquivos de troca; portanto, mesmo que os sinalizadores não sejam definidos na configuração global ou no carregamento automático, eles serão herdados durante a recuperação. Para substituir uma sequência de recuperação por um único arquivo de recuperação, você pode mover a troca que deseja .swp e ocultar o restante. Gostaria de saber mais sobre a sobreposição entre recuperação de arquivos e gerenciamento de sessões do Vim, se alguém puder preencher as lacunas.
John P
7
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 .swparquivo) e encerrei o processo, depois excluí o original. $ vim Original_Fileperguntou 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?
emacs
? (ou sublime, nano, ed, etc.)Respostas:
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
.fonte
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:
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.
fonte
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. Usandovim -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.
fonte
1 Abra o arquivo de troca
.file.swp
emvim
2
:recover
recuperará seu arquivofonte
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?
fonte