Essa mensagem é realmente muito importante se você se preocupa em não perder o texto que não salvou. Ele deve não ser considerado irritante, e deve não causar-lhe para apagar rapidamente o arquivo de swap ou configure vim
a correr sem ele.
Qualquer arquivo com o qual você editar vim
terá um arquivo de troca correspondente enquanto você edita , vim
usado para acompanhar as alterações. Quando você parar de editar um arquivo, vim
descartará automaticamente o arquivo de troca correspondente. Portanto, a existência de um arquivo de troca e sua tentativa de gravar 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 bastante comuns: (1) qualquer outro vim
programa está editando o mesmo arquivo que você está tentando editar (que poderia realmente ser outra pessoa - caso em que realmente não faria sentido excluir apenas cegamente o arquivo de troca - ou pode ser você em outra janela ou guia do terminal) ou (2) uma vim
sessão anterior travou (na maioria das vezes isso acontece quando você está editando remotamente e a sessão de rede é cortada), na qual caso a sessão vim não tenha sido encerrada normalmente e o .swp
arquivo permaneça atrasado; outro exemplo desse segundo cenário é que você acidentalmente fechou a janela ou guia do terminal que possuía uma vim
sessão ativa ou em segundo plano ).
Quando encontro essa mensagem, penso primeiro se estou editando esse arquivo em outra janela ou guia do terminal, pois normalmente opero com várias janelas do terminal com várias guias cada:
Se eu perceber que estou editando em outro local e puder retornar a ele , pressione a q
tecla para (Q)uit
esta sessão adicional e retornarei à edição pela vim
sessão original .
Às vezes, se não tiver certeza, (Q)uit
corro jobs
para verificar se estou executando vim
exatamente no mesmo terminal; se nada acontecer, corro ps -ef | grep vim
para verificar se estou executando em vim
outro local (ou seja, em outra janela ou guia do terminal). O ponto é que sempre tento retomar a edição através da vim
sessão original .
Se tiver certeza de que não posso retornar à sessão de edição original e ainda assim me apresentarem as seguintes opções, pressione r
para (R)ecover
.
Swap file ".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, não estiver mais com essas opções, porque estou no prompt do shell, então corro vim
com a -r
opção, 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 emitirá uma mensagem de erro e inserirá linhas com "???" No texto. Se você vir uma mensagem de erro durante a recuperação, procure no arquivo "???" para ver o que está errado. Você pode recortar e colar para obter o texto necessário.
A observação mais comum é "??? LINHAS AUSENTES". Isso significa que o Vim não pode ler o texto do arquivo original. Isso pode acontecer se o sistema travar e partes do arquivo original não forem salvas.
Dito isto, nunca vi essas ???
marcas, portanto essa deve ser uma ocorrência verdadeiramente rara .
Em seguida, salve (ou seja, escreva) o conteúdo em outro arquivo (normalmente apenas adiciono "2" ao final do nome do arquivo original):
:w notes2
Em seguida, saia da força nesta vim
sessão:
:q!
Em seguida, compare os dois arquivos:
diff notes notes2
Se o valor diff
não retornar nada , isso significa que não há diferença e é seguro remover o arquivo de permuta e o segundo arquivo:
rm .notes.swp notes2
Nesse ponto, abra o arquivo original e continue como se nunca houvesse um problema:
vim notes
Se o valor diff
retornar algo , isso significa que o arquivo original (via 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
Nesse ponto, abra o arquivo original e continue como se nunca houvesse um problema:
vim notes
Parece muito trabalho, mas depois que você se acostuma com o fluxo de trabalho, leva 20 segundos no máximo.