Uma maneira um pouco mais simples

Uma maneira um pouco mais simples

Às vezes, o Vim trava e me deixa um arquivo de troca. Fantástico. Então abro o arquivo que estava editando e o Vim me pergunta se quero recuperar. Sim, obrigado. Quando terminar, Vim me diz,

You may want to delete the .swp file now.

Sim, eu quero. Como faço isso? Achei que seria apenas começar a usar o arquivo de troca antigo como arquivo de troca novamente e limpá-lo quando eu saísse, mas isso não é verdade. Ele cria um novo, limpa-o e, quando abro o arquivo novamente, ele me solicita novamente a recuperação do primeiro.

Certamente estou faltando alguma coisa.

Responder1

Uma maneira um pouco mais simples

No emulador de terminal:

$ vim filename

Então dentro do vim escolharecuperar, e se você quiser excluir a troca, vocêescrever(salvar) e então chame este comando:

:e          // no argument needed. It assumes the current buffer.

...e escolhaexcluirdesta vez.

Um benefício dessa abordagem é que ela não substituirá automaticamente um arquivo de trabalho, se a recuperação for corrompida (embora isso nunca tenha acontecido antes).

Também há dicas relevantesnesta questãono Stack Overflow (onde encontrei esta dica).

Responder2

Para limpar TODOS os arquivos de troca do vim em um diretório:

Se você tem certeza de que não precisa de nenhum arquivo de troca do vim em uma árvore de diretórios e deseja se livrar deles, você pode usar o seguinte comando no diretório enquanto o vim estánãoem execução (nem mesmo em outra janela ou em uma sessão de login diferente):

find . -type f -name "*.sw[klmnop]" -delete

Algumas inspirações e pensamentos vieram deRemovendo arquivos .swp indesejados nos Grupos do Google. Isso excluirá todos os arquivos cujos nomes terminam com .swk, .swl, .swm, .swn, .swoou .swp na árvore de diretórios atual.

Isso pode não ser o que você deseja, por vários motivos:

  • Como afirmado, ele pesquisa o diretório atualárvore ; ou seja, o diretório atual e todos os subdiretórios, recursivamente. Isso vai além do que a pergunta pede e pode ser considerado um exagero.
  • Conforme declarado, ele excluirá todos os arquivos cujos nomes terminam com .swk, .swl, .swm, .swn, .swo, ou .swp, e não apenas .swpGary Johnson diz,

    Além disso, nem todos os arquivos de troca terminam em .swp. Se o Vim precisar criar um arquivo de troca e já existir um que termine em .swp, o Vim usará a extensão .swo para o novo e .swn depois disso. Acho que apenas continua de trás para frente no alfabeto. Então, usando algo como

      \*.sw[nop] 
    

    ou mesmo

      \*.sw? 
    

    seria mais completo.

    O autor original deessepostagem diz,

    'klmnop' pode ser um exagero, mas geralmente garante que eu receba todos eles.

  • Por outro lado, pode ser insuficiente.  rublo sugere

    find . -type f \( -name ".*.s[a-v][a-z]" -o -name ".*.sw[a-p]" \) -delete
    

    que corresponde a todas as extensões de três letras (minúsculas) variando de .saaa .swp. Ele acrescenta: “Tenha cuidado, embora esta seja uma solução mais completa, ela removerá todos os arquivos de imagem .svg e .swf Adobe Flash. Você pode querer modificar o regex se trabalhar com esses arquivos.” Ele também corresponde a .sav, .snd(dados de som), .sql, .src, .srt(formato de legenda de vídeo SubRip) e muitas outras extensões comuns.

  • Pode ser um exagero. Conforme declarado, ele excluirá todos os arquivos cujos nomes terminam com .swk, .swl, .swm, .swn, .swoou .swp. Mas, aparentemente, os arquivos de troca do vim são comumente arquivos “ponto”. Se você editar hello.cpp, o arquivo de troca poderá ser .hello.cpp.swp. Como mostrado (mas não explicado) emresposta do rublo, é mais seguro excluir apenas arquivos cujos nomes comecem com um ponto; por exemplo, com

    find . -type f -name ".*.sw[klmnop]" -delete
    

Responder3

Digite ls -aque lista TODOS os arquivos no diretório

digite rm .whatever.your.swpé e pressioneenter

É simples assim.

Qualquer arquivo exibido na .frente é um arquivo oculto e normalmente não é visto.

Lembre-se de que as mudanças são imediatas e permanentes, portanto tome cuidado.

Responder4

Por falar nisso. alguns plug-ins fazem isso automaticamente para você:troca automática.vim

da descrição:

  1. O arquivo já está aberto em outra sessão do Vim em alguma outra janela?
  2. Nesse caso, mude para a janela onde estamos editando esse arquivo.
  3. Caso contrário, se o swapfile for mais antigo que o próprio arquivo, livre-se dele.
  4. Caso contrário, abra o arquivo somente leitura para que possamos dar uma olhada e salvá-lo.

informação relacionada