À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
, .swo
ou .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.swp
. Gary 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
O autor original deessepostagem diz,\*.sw[nop]
ou mesmo
\*.sw?
seria mais completo.
'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
.saa
a.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
,.swo
ou.swp
. Mas, aparentemente, os arquivos de troca do vim são comumente arquivos “ponto”. Se você editarhello.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, comfind . -type f -name ".*.sw[klmnop]" -delete
Responder3
Digite ls -a
que 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:
- O arquivo já está aberto em outra sessão do Vim em alguma outra janela?
- Nesse caso, mude para a janela onde estamos editando esse arquivo.
- Caso contrário, se o swapfile for mais antigo que o próprio arquivo, livre-se dele.
- Caso contrário, abra o arquivo somente leitura para que possamos dar uma olhada e salvá-lo.