Toda vez que eu interrompo uma sessão no vim perdendo minha conexão, estou bastante cheio de dred (e ainda continuo usando o vim ... que masoquista devo ser) porque quando abro meus arquivos novamente, uma pilha de troca- arquivos estão esperando para tentar destruir meu trabalho. Quais são as melhores práticas para trabalhar com arquivos de troca vim? Você acabou de escolher o mais novo? Se o arquivo funcionar da maneira que você espera, você simplesmente exclui os arquivos de troca? Como você se livra deles?
14
Respostas:
Não entre em pânico!
A recuperação de arquivos é sempre segura, porque o vim nunca grava alterações até que você as grave. Portanto, recuperar-se de um arquivo de troca e fechar sem salvar não mudará nada.
Organize seus arquivos de troca:
Faça com que o vim coloque todos os seus arquivos de troca no mesmo local, para que você sempre saiba onde eles estão:
ou onde você preferir. O uso
//
no final do nome do arquivo faz com que o vim use caminhos de arquivo absolutos para os nomes dos arquivos de troca, para que você não tenha colisões de nomes. Verifique se o diretório existe ou o vim não o usa (não o cria para você).Nota: Isso funciona apenas em variáveis de ambiente, se você deseja usar uma variável vimscript, precisamos usar um pouco de
:execute
mágica:Diff as diferenças:
Ajuda do Vim sugere um comando muito útil para usar nesta situação:
:DiffOrig
. Não é um comando vim padrão , portanto, copie a implementação:h :DiffOrig
para o seu vimrc. (também está$VIMRUNTIME/defaults.vim
se você tiver o vim8). Agora, você pode recuperar o arquivo e simplesmente executar o DiffOrig para obter um vimdiff do que mudou na versão não modificada.Se você deseja comparar o conteúdo de vários arquivos de troca, recupere seu arquivo com cada arquivo de troca diferente e, em seguida, grave o resultado em arquivos temporários. Agora carregue os arquivos e execute
:diffthis
em cada arquivo, faça as alterações desejadas, escreva de volta para o arquivo original e exclua os arquivos temporários e de troca.Comandos úteis:
:swapname
: obtenha o nome que o vim está usando no arquivo de troca do buffer atual (:h :swapname
):recover
: recupera o arquivo selecionado, o mesmo que quando você inicia o vim e pressiona R(:h :recover
)Confira a ajuda:
Vim tem uma seção inteira do manual do usuário em recuperação:
:usr_11.txt
ajuda de referência do Vim em arquivos de swap:
:h swap-file
,h recovery
Ajuda sobre a opção de diretório (para definir o local do arquivo swap):
:h 'directory'
Edit: Exemplo modificado para configuração de diretório, como apontado nos comentários de @B Layer
fonte
exec
...set directory^=$HOME/.vim/swap//
funciona bem, desde que$HOME
seja uma variável de ambiente inicializada. Veja:h expand-env
. Também trabalha comdictionary
,undodir
ebackupdir
para citar alguns.Pessoalmente, desativei os arquivos de troca e backup, pois ele tende a criar arquivos de troca e arquivos de backup em todos os lugares e frequentemente cria conflitos. O desfazer persistente do Vim tem sido muito mais confiável e livre de erros.
Atualmente, o Vim tem desfazer persistente, é um método de backup muito mais refinado. Toda vez que você pressiona Esc, o estado atual do arquivo é capturado.
Você pode usar
:undolist
plugins como gundo ou desfazer uma árvore para navegar no seu histórico de desfazer.Para usar o vim desta maneira:
No shell:
No Vim
Para desativar os arquivos de troca:
:set noswapfile
fonte
'writebackup'
soluciona outro problema). A desativação persistente ativada não ajudará se o computador travar. Você pode argumentar que os arquivos de troca são desnecessários por outros motivos (estabilidade moderna do sistema operacional, existência de no-breaks), mas não o fez nesta resposta. 2. a configuração'undodir'
não permite desfazer persistente! Você precisa definir'undofile'
para este