O que faz com que arquivos de troca sejam criados?

31

Como parte do programa que escrevi, leio e escrevo constantemente dados de arquivos. Percebi que, como parte disso, estou criando inadvertidamente .swparquivos de troca .

O que você acha que está acontecendo? O que faria com que os arquivos de troca aparecessem se você tivesse que reproduzir o problema?

GELÉIA
fonte

Respostas:

41

O arquivo .swp não é um arquivo de troca no sentido do SO. É um arquivo de estado. Ele mantém as alterações desde a última gravação (exceto os últimos 200 caracteres), os buffers que você salvou, as macros não salvas e a estrutura de desfazer.

Você pode ler mais na ajuda de VIM: vim +help\ swap-file. Se houver uma falha (falha de energia, falha do sistema operacional etc.), você poderá recuperar suas alterações usando este arquivo de troca. Depois de salvar as alterações do arquivo de troca no arquivo original, você precisará sair do vim e remover o arquivo de troca você mesmo.

Arcege
fonte
Por alguma razão, meu arquivo ~ / .swp tem 11,7 GB. Eu apenas apaguei.
Daniel Cheung
19

.swpQuando os arquivos são criados pelo Vim , eles devem ser excluídos automaticamente quando você fecha o arquivo e sai do editor.

Juliano
fonte
1
Eles podem ser criados de fora Vim? Em meus arquivos de casos são escritos do meu programa diretamente, sem usar o editor
JAM
@JAM: Com que idioma e bibliotecas este programa foi escrito?
jwodder
5
@JAM Geralmente não, é um recurso do Vim. Duvido que esses arquivos estejam sendo gravados diretamente do seu programa sem você saber, não faz sentido. É muito mais provável que você esteja confuso, esses arquivos estão sendo criados enquanto você edita os arquivos com o Vim e os atribui ao seu programa.
Juliano
4

Os arquivos .swp nada mais são do que um tipo de arquivo de bloqueio que o editor, geralmente o vim, cria para indicar que o arquivo está sendo editado. Dessa forma, se você abrir o arquivo em outra instância do vim, se alguém na rede fizer isso, eles receberão um aviso de que o arquivo está sendo editado.
Você não precisa excluí-los manualmente. Seu editor removerá o arquivo de troca assim que você fechar o arquivo no seu editor.

Aditya Patawari
fonte
2

Acabei de executar um comando mv em um arquivo de 31GB e um arquivo .swp de 13GB foi criado, sem edição envolvida.

mv X.csv Y.csv criou Y.csv e .Y.csv.swp

Sistema de arquivos CentOS 6.5, ext4

user56408
fonte
Obrigado. Você também teve uma experiência semelhante com o `rsync '?
imriss