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.
vim -n file_name
A mensagem colada sugere que você ainda tem o arquivo "notes" aberto em outra sessão do Vim. Definitivamente, não é uma boa ideia editar um arquivo que está sendo editado em outro lugar.
Se essa mensagem estiver errada, você precisará determinar como sua sessão do Vim saiu incorretamente e evitá-la no futuro.
Quanto à recuperação, isso pode ser um problema nesta instância, pois "notes" é mais recente que o arquivo .swp do Vim associado a ele, mas você ainda pode tentar. Apenas certifique-se de copiar o arquivo "notas" para um local de backup primeiro.
Seria uma boa ideia ler "
:help recover.txt
".A lição aqui é que você não deveria estar vendo esta mensagem e que significa que algo deu errado em algum lugar. (Provavelmente) não é culpa do Vim.
Se, nesse ponto, você ainda estiver absolutamente determinado a não permitir que o Vim crie arquivos .swp para poder se recuperar de falhas e outros problemas relacionados, você pode "
set noswapfile
" inserir~/.vimrc
.fonte
Você pode usar -n para abrir o vim sem usar um arquivo de troca :
Para fazer isso o tempo todo, basta colocar
no seu arquivo .bashrc ou .bash_aliases
se você precisar executar o vim sem a opção -n, basta executar
fonte
O vim removerá o arquivo .swp gerado quando você o sair corretamente.
fonte
Use a opção de mensagem curta em seu
~/.vimrc
:Qual também é o padrão ao executar o modo POSIX.
No entanto, não faça isso : é como remover os airbags do seu carro para aumentar a eficiência de combustível. A longo prazo, você gastará mais tempo se recuperando do que nunca, respondendo à pergunta.
fonte
:e
para ver o que aconteceu (incluindo um rápidou
para trás desfazer o que Eu tinha no buffer.) Eu gosto muito mais do que ficar chateado por já ter um arquivo aberto.Isso aconteceu comigo quando meu terminal inesperadamente fechou minha conexão com o vi open.
Felizmente, não tive alterações perdidas.
process ID: 2251 (still running)
, neste caso, é 2,251ps 2251
kill 2251
E é isso.
Lembre-se de que os arquivos de troca existem para protegê-lo, e você não deve desativá-los completamente.
fonte
vi(m)
processo?Resolvi esse problema em três etapas simples:
1 :) Execute "ls -la" onde o arquivo existe para que você possa visualizar o arquivo .swp para o mesmo.
2 :) Agora "rm -i * .swp", ou seja, remova o arquivo ".swp" do diretório.
3 :) Agora confirme se o arquivo ".swp" foi removido.
4 :) Agora aproveite esses avisos.
fonte
rm -rf
remover um arquivo? I substituído-rf
com um mais sensato-i