Onde o VIM (gvim/macvim) mantém arquivos de troca para buffers não salvos/sem nome?

Onde o VIM (gvim/macvim) mantém arquivos de troca para buffers não salvos/sem nome?

Onde o VIM (gvim/macvim) mantém arquivos de troca para buffers não salvos/sem nome? (Se isso acontecer).

Fundo: Durante um seminário semi-intenso, eu estava fazendo anotações em um buffer MacVim sem nome/não salvo quando o MacBook ficou sem energia e desligou do nada (ele não hibernou/hibernou como normalmente faria).

Pergunta: Alguém saberia se há alguma chance de o trabalho não salvo ter sido salvo em um arquivo de troca (.swp) ou algo semelhante, que possa ser recuperado?

Detalhes do sistema: Em particular, isso aconteceu usando o MacVim em um Mac OS X 10.5.8 (mas possíveis dicas de recuperação para outras versões também são interessantes). Ainda não reiniciei o MacVim, caso isso inicie um processo de limpeza.

Responder1

Inicie o vim e tente:

:recover <filename>

Se o arquivo nunca teve um nome, simplesmente:

:recover

Essa é a sua melhor aposta. Para obter mais informações sobre arquivos de troca e recuperação, consulte:

:help usr_11

Sobre os arquivos de troca, normalmente eles são salvos no mesmo diretório do arquivo que está sendo editado, mas com uma extensão . adicionei o início para torná-lo oculto e .swp no final, mas é possível movê-los para outro lugar com algo como:

:set directory=~/vimswap

ou similar.

Ver:

:help swap

Para todos os detalhes.

Um arquivo de troca do vim não é o mesmo que o buffer editado, portanto, certifique-se de ler lá sobre o que pode ser feito para recuperação.


EDITAR: comentários respondendo à pergunta:

[…] Parece procurar em seu diretório de trabalho atual, ~/tmp, /var/tmp e /tmp por arquivos de troca e no meu caso eu sempre tenho um diretório de trabalho atual definido e é onde ele foi salvo.– dsclementsen 5 de outubro de 2010 às 1:42

Além disso, certifique-se de verificar o argumento da linha de comando vim -r. Isso imprimirá todos os arquivos de troca encontrados e onde eles estão. Além disso, terá muitas informações extras, como data/modificação/nome de usuário/etc...– Neg_EV 5 de outubro de 2010 às 13:49

Responder2

Eu trabalho no Windows 10 e :recovernão encontrei um arquivo de troca. vim -rlistou o arquivo de troca da última sessão de edição (também nunca salva) chamado _.swp. A recuperação foi possível com :recover _.

Responder3

A resposta é: em todo lugar. O truque é encontrar o caminho certo. Alguns estão no seu diretório /tmp, mas muitos deles estão em algum lugar no seu diretório inicial.

Talvez existam maneiras mais eficientes de fazer isso, mas o seguinte funcionou para mim quando perdi um arquivo sem nome (no MacBook):

no diretório inicial, procure por arquivos de backup (leva alguns segundos e provavelmente pode ser mais inteligente):

find ./ -name ".s*" > findVimBackups.txt

abrir arquivo:

vim findVimBackups.txt

remova nomes de arquivos que não sejam para backups de arquivos sem nome:

:g!/\/\.s..$/d
:g/svn/d

Agora vejo uma lista dos locais dos arquivos de backup sem nome. Em cada um desses diretórios eu executo o seguinte até encontrar o(s) arquivo(s) de hoje:

ls -ltra <directory>

Eu cd no diretório correto e abro o vim e digito :recover e seleciono o backup correto.

Responder4

Consegui recuperar meu arquivo em uma caixa win 10 da seguinte maneira:

Vá para o diretório que você abriu pela última vez no vim. Para mim, isso foi através do atalho do vim na barra de tarefas do win 10. Clique com o botão direito no ícone do vim, clique com o botão direito novamente no atalho do vim e selecione 'propriedades'. Uma caixa de diálogo aparecerá. O valor no campo 'Iniciar em:' nessa caixa de diálogo é onde eu abri o vim pela última vez. Para mim, esse valor foi %HOMEDRIVE%%HOMEPATH%. Vá para um console de comando do DOS e invoque os comandos echo %HOMEDRIVE%e echo %HOMEPATH%determine onde ele está.

Examine as datas da última modificação de todos os arquivos _.s* nesse diretório. Encontre o arquivo com a data da última modificação que corresponde à última vez que você abriu o arquivo.

Abra o vim. Digite :recover _filename_ondenome do arquivoé o arquivo que você encontrou na instrução anterior.

informação relacionada