Esta mensagem é realmente muito importante se você se preocupa com o texto não perder que potencialmente não salvou. Ela deve não ser considerada irritante e deve não fazer com que você exclua apressadamente o arquivo de troca ou configure vim
para ser executado sem ele.
Qualquer arquivo que você editar com vim
terá um arquivo de troca correspondente enquanto você edita , que vim
usa para acompanhar as alterações. Quando você sai da edição de um arquivo, vim
descartará automaticamente o arquivo de troca correspondente. Portanto, a existência de um arquivo de permuta e sua tentativa de escrever sobre o arquivo original devem ser motivo de consideração e ação apropriada.
Os dois cenários apresentados na mensagem ( E325: ATTENTION Found a swap file
) são realmente muito comuns: (1) outro programa vim
está editando o mesmo arquivo que você está tentando editar ( poderia realmente ser outra pessoa - caso em que realmente não faria sentido apagar apenas o arquivo de troca - ou poderia ser você em outra janela ou guia de terminal, ou (2 ) uma sessão vim
anterior travou (na maioria das vezes isso acontece quando você está editando remotamente e a sessão de rede é interrompida - nesse caso a sessão vim não foi encerrada normalmente e o arquivo .swp
ficou para trás ; outro exemplo desse segundo cenário é que você acidentalmente fechou a janela ou a guia do terminal que tinha uma sessão vim
ativa ou em segundo plano).
Quando encontro esta mensagem, primeiro penso se estou editando esse arquivo em outra janela ou guia de terminal, pois normalmente operei com várias janelas de terminal com várias guias cada:
Seeuperceberqueestoueditandoemoutrolugar,epuderretornaraele,pressionareiateclaq
para(Q)uit
destasessãoadicionaleretornareiàediçãopormeiodooriginalvim
session.
Àsvezes,senãotivercerteza,eu(Q)uit
edepoisexecutojobs
paraverificarseestouexecutandovim
exatamentenomesmoterminal;senadaaparecer,corrops-ef|grepvim
paraverificarseestouexecutandovim
emoutrolugar(ouseja,emoutrajanelaouguiadeterminal).Opontoéqueeusempretentoretomaraediçãoatravésdasessãovim
original.
Seeutivercertezadequenãopossovoltaràsessãodeediçãooriginaleaindaassimreceberasseguintesopções,pressioner
to(R)ecover
.
Swapfile".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
Pressionando r
, você verá uma mensagem como esta:
Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
Se, por outro lado, eu não mais me deparar com essas opções, porque estou no prompt do shell, execute vim
com a opção -r
, da seguinte maneira:
vim -r notes
A mensagem resultante será semelhante:
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
De qualquer forma, pressione ENTER
para continuar e você verá seu arquivo.
Nota: Se o Vim tiver dúvidas sobre o que encontrou, ele mostrará uma mensagem de erro e inserirá linhas com "???" No texto. Se você vir uma mensagem de erro durante a recuperação, pesquise no arquivo "???" para ver o que está errado. Você pode querer recortar e colar para obter o texto que precisa.
A observação mais comum é "??? LINES MISSING". Isso significa que o Vim não pode ler o texto do arquivo original. Isso pode acontecer se o sistema falhar e partes do arquivo original não forem salvas.
Dito isso, nunca vi essas marcas ???
, portanto, essa deve ser uma ocorrência realmente rara .
Em seguida, salve (ou seja, escreva) o conteúdo em outro arquivo (normalmente, basta adicionar "2" ao final do nome do arquivo original):
:w notes2
Em seguida, force a saída da sessão vim
:
:q!
Em seguida, compare os dois arquivos:
diff notes notes2
Se o diff
não retornar nada , isso significa que não há diferença, e é seguro remover o arquivo de troca e o segundo arquivo:
rm .notes.swp notes2
Neste ponto, abra o arquivo original e prossiga como se nunca houvesse um problema:
vim notes
Se o diff
retornar algo , significa que o arquivo original (através do arquivo de troca) teve alterações que, graças à recuperação, foram salvas no segundo arquivo.
Como essas alterações são capturadas no segundo arquivo, é seguro excluir o arquivo de troca e substituir o arquivo original pelo segundo:
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
Neste ponto, abra o arquivo original e prossiga como se nunca houvesse um problema:
vim notes
Parece muito trabalho, mas depois que você se acostumar com o fluxo de trabalho, leva 20 segundos no máximo.