O Vim salva automaticamente?

13

De :help swap-file:

Atualizando o arquivo de troca

O arquivo de troca é atualizado após a digitação de 200 caracteres ou quando você não digita nada por quatro segundos. Isso só acontece se o buffer foi alterado, não quando você apenas se moveu. A razão pela qual ele não é atualizado o tempo todo é que isso atrasaria muito o trabalho normal. Você pode alterar a contagem de 200 caracteres com a opção 'updatecount'. Você pode definir o horário com a opção 'updatetime'. O tempo é dado em milissegundos. Depois de gravar no arquivo de troca, o Vim sincroniza o arquivo no disco. Isso leva algum tempo, especialmente em sistemas Unix ocupados. Se você não quiser isso, pode definir a opção 'swapsync' como uma string vazia. O risco de perder o trabalho se torna maior. Em alguns sistemas não Unix (MS-DOS, Amiga), o arquivo de troca não será gravado.

A partir disso, tenho algumas perguntas:

  1. Isso significa que o Vim salva automaticamente seu trabalho de tempos em tempos?

  2. "Depois de gravar no arquivo de troca, o Vim sincroniza o arquivo no disco." O que isto significa? Isso se refere ao arquivo que está sendo gravado primeiro na memória e depois no disco ou é outra coisa?

  3. Digamos que estou fazendo anotações de aula: escrevo rápido e não preciso sair do modo Inserir. Mas muitas vezes mudo para Normal apenas para salvar meu trabalho. Preciso fazer isso ou o Vim garante que a maior parte do meu trabalho seja salva, mesmo que eu não saia do modo Inserir?

Gonçalo Ribeiro
fonte

Respostas:

9
  1. Sim, ele salva para trocar de arquivo.

Você pode fazer um teste rápido para ter uma idéia disso. Vá para um diretório. Diga vim notest.txte escreva algum texto. Você nem precisa salvar o arquivo.

Se você listar arquivos no diretório de trabalho, encontrará um arquivo de troca. Copie-o para um diretório diferente (onde você não possui um arquivo "notes.txt", como por exemplo vim notest.txt.

Você recebe uma observação sobre a troca existente, a modificação e as opções de abrir como somente leitura, recuperar etc. Escolha recuperar e pronto! Uma "cópia" do seu arquivo.

  1. Sim, a troca é mantida na memória.

Quando o Vim lê um arquivo, ele é adicionado à RAM. Isso é para os existentes e os novos (arquivos ainda não salvos). À medida que a troca é salva, ela é liberada para o disco. O disco rígido. Da RAM.

  1. Sim e não.

Com as configurações padrão, a maior parte do seu trabalho é salva. Isso é para cada 200 caracteres digitados ou quando você tem uma pausa de 4 segundos. Embora confie no arquivo de troca a ser salvo, gosto de salvar meu trabalho quando sei que estou em um sistema instável. Mas, dito isso, é certo que se manterá o trabalho, a menos que se deva ter muita azar e o sistema de hospedagem entre em pânico logo após escrever uma frase muito importante.

Em resumo, é suficiente economizar quando a palestra terminar. Se o sistema parar por alguma razão no meio de uma classe, o trabalho será mantido até a troca.

Claro: Se você tiver muito azar, pode ocorrer uma falha enquanto o arquivo de troca está sendo gravado. Como resultado, o arquivo de troca pode estar corrompido. Nunca experimentei isso e não tenho certeza de quais partes do arquivo podem estar bagunçadas, mas vale a pena pensar. Como o arquivo de troca é binário (na falta de uma palavra melhor), parece raciocinar que é mais frágil do que um arquivo de texto simples.


Como uma nota rodapé. Pelo menos ao usar o diretório de trabalho para troca, o arquivo de troca é independente de local quando se trata de recuperação. Como tal, você pode copiar o arquivo de permuta para um novo local e recuperá -lo como um novo arquivo. Observe apenas que o nome do arquivo está codificado na troca. Como tal, você não pode dizer:

cp .foo.txt.swp .bar.txt.swp

e

vim bar.txt

e espere o arquivo de troca de foo.txt.

Se você está muito interessado, pode fazer (no * nix):

xxd -s 108 -l 800 -ps .foo.txt.swp | xxd -r -p

para obter o caminho (com algumas peculiaridades) do arquivo original. Como você verá, o caminho completo foi adicionado, por exemplo:

~user/blah/blah/notes.txt

mas apenas o nome da base é usado na verificação de troca.

Nesse sentido, você também pode verificar a vim -ropção - que lista os arquivos de troca nos diretórios atuais e inferiores. Veja :h crash-recoverycom sub-tópicos.

Runium
fonte
0

Para mim, é bom salvar o buffer sempre que o texto for alterado:

autocmd TextChanged,TextChangedI <buffer> silent write

Encontrei aqui . Funciona para mim.

simhumileco
fonte