VIM - deixa arquivos .swp após o travamento

7

Eu uso MacVim (snapshot 51) para editar os arquivos Python / HTML / etc em projetos de tamanho moderado. A cada poucos meses o meu sistema trava ou trava, e o Vim deixa uma infinidade de arquivos * swp por aí. Quando eu for reabrir o Vim após o travamento e editar qualquer um desses arquivos, me disseram que "arquivo de troca '' .xyz.swp '' já existe!" com as opções de [Cancelar] [Sair] [Excluir] [Recuperar] [Editar mesmo assim] e [Abrir somente leitura].

Esta opção de recuperação faria sentido se houvesse alterações no buffer do Vim que não foram salvas no momento da falha. No entanto, no momento da falha, esses arquivos foram abertos no plano de fundo do Vim e inalterados.

Se possível, como posso configurar o Vim para não fazer essa pergunta supérflua ao abrir arquivos para os quais não há alterações entre o arquivo .swp e o arquivo real, por exemplo, por um de:

  1. Comparando automaticamente as alterações no arquivo .swp com o arquivo, e se não houver alterações, basta abrir o arquivo sem avisar;

  2. Não manter um arquivo .swp para arquivos que não tenham alterações.

  3. Qualquer outro meio de evitar sistematicamente esse prompt sem sentido (mas eu prefiro não evitar o prompt nos casos em que, é claro, houver alterações não salvas).

Eu tenho mais de 50% de arquivos.swp para limpar no momento, e o prompt sem sentido é uma frustração que eu ficaria grata em evitar.

Obrigado pela leitura.

Brian

    
por Brian M. Hunt 21.06.2010 / 17:16

4 respostas

3

Eu não testei, mas e esta solução apresentada no wiki oficial do vim?

O arquivo de troca "..." já existe! - então diff it

Also in the situation where the recovered swapfile turns out to be identical to the real file, there is no need for the diffing.

#!/bin/bash
# Expects variables realfile, swapfile, recoveryfile.
vim -r "$swapfile" -c ":wq! $recoveryfile" && rm "$swapfile"
if cmp "$recoveryfile" "$realfile"
then rm "$recoveryfile"
else vimdiff "$recoveryfile" "$realfile"
fi

Há um script para esse problema também em Stackoverflow .

This will remove any swap files that are up-to-date with the real files. Any that don't match are brought up in a vimdiff window so I can merge in my unsaved changes.

    
por 28.06.2010 / 04:04
4

Embora não seja exatamente o que você deseja, isso pode atenuar o problema:

" Setup backup location and enable
set backup
set backupdir=$HOME/temp/vim_backups/       "where to put those backups
set directory=$HOME/temp/vim_swp/           "this is for swp files      

Crie esses diretórios e vim com os arquivos ~ e .swp em um local central. Muito mais fácil de limpar dessa maneira!

Além disso, confira recover.vim - se um arquivo .swp for detectado, irá pedir para executar um diff na versão em disco e no swp, para que você possa ver o que mudou. Muito mais útil desta forma IMO.

    
por 28.06.2010 / 04:53
0

O Vim cria automaticamente arquivos .swp como backup para exatamente essa situação: o sistema trava. Para desabilitar a criação de arquivos .swp, siga as estas instruções. p>

1º resultado do Google: vim disable .swp .

    
por 21.06.2010 / 17:53
-1

Lendo a documentação do recurso "swap-file" no Vim executando o comando Vim :help swap deve ajudá-lo com muitas coisas sobre como o Vim lida com a criação de arquivos de troca, etc.

    
por 21.06.2010 / 18:00