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 :recover
não encontrei um arquivo de troca. vim -r
listou 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.