Como se livrar dos avisos ao abrir um arquivo que possui um arquivo .swp?

38

Como posso me livrar dos avisos irritantes quando abro um arquivo que tem um arquivo .swp? Ou, como eu não gero os arquivos .swp? Exemplo de aviso:

E325: ATTENTION
Found a swap file by the name ".notes.swp"
          owned by: james   dated: Fri Dec  3 17:38:07 2010
         file name: ~james/school/se/project-dir/rottencucumber/doc/notes
          modified: no
         user name: james   host name: james-laptop
        process ID: 2251 (still running)
While opening file "notes"
             dated: Fri Dec  3 18:46:10 2010
      NEWER than swap file!

(1) Another program may be editing the same file.
    If this is the case, be careful not to end up with two
    different instances of the same file when making changes.
    Quit, or continue with caution.

(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r notes"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".notes.swp"
    to avoid this message.

Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
    
por James 04.12.2010 / 07:41

7 respostas

19

A mensagem colada sugere que você ainda tenha 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ê precisa determinar como sua sessão do Vim saiu incorretamente e evitar isso no futuro.

Quanto à recuperação, isso pode ser um problema nesta instância, já que "notes" é mais recente que o arquivo .swp associado a ele, mas você ainda pode tentar. Apenas certifique-se de copiar seu arquivo "notes" 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 você está querendo dizer que algo deu errado em algum lugar. É (provavelmente) não é culpa do Vim.

Se, neste momento, você ainda estiver absolutamente determinado a não permitir que o Vim crie arquivos .swp para recuperar-se de falhas e outros problemas relacionados, você poderá colocar " set noswapfile " em ~/.vimrc .

    
por 04.12.2010 / 09:39
38

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,pressionareiateclaqpara(Q)uitdestasessãoadicionaleretornareiàediçãopormeiodooriginalvimsession.

Àsvezes,senãotivercerteza,eu(Q)uitedepoisexecutojobsparaverificarseestouexecutandovimexatamentenomesmoterminal;senadaaparecer,corrops-ef|grepvimparaverificarseestouexecutandovimemoutrolugar(ouseja,emoutrajanelaouguiadeterminal).Opontoéqueeusempretentoretomaraediçãoatravésdasessãovimoriginal.

Seeutivercertezadequenãopossovoltaràsessãodeediçãooriginaleaindaassimreceberasseguintesopções,pressionerto(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.

    
por 02.11.2012 / 21:20
10

Você pode usar -n para abrir o vim sem usar um arquivo de permuta :

Para fazer isso o tempo todo, basta colocar

alias vim='vim -n' 

no seu arquivo .bashrc ou .bash_aliases

se você precisar executar o vim sem a opção -n, basta executar

\vim
    
por 27.03.2014 / 00:35
2

O vim removerá o arquivo .swp gerado quando você sair corretamente.

    
por 04.12.2010 / 07:43
1

Isso aconteceu comigo quando meu terminal fechou inesperadamente minha conexão com o vi aberto.

Felizmente eu não tive nenhuma mudança perdida.

To remove that warning and discard the swap:

  1. Encontre o ID do processo olhando para process ID: 2251 (still running) , neste caso é 2251
  2. Verifique se você obteve o ID correto ps 2251
  3. Mate o processo usando kill 2251

E é isso.

Lembre-se de que os arquivos de troca estão lá para protegê-lo e você não deve desativá-los completamente.

    
por 02.04.2018 / 02:53
0

How can I get rid of the annoying warnings when I open a file that has a .swp file?

Use a opção mensagem curta em ~/.vimrc :

set shortmess=A

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ê passará mais tempo se recuperando do que já respondeu à pergunta.

    
por 14.04.2016 / 19:26
-2

Eu 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", isto é, remova o arquivo ".swp" do diretório.

3 :) Agora confirme se o arquivo ".swp" foi removido.

4 :) Agora aproveite esses avisos.

    
por 04.02.2015 / 17:10

Tags