Vim escreve latência no tmux

1

Tenho notado que, ao usar o Vim no tmux em uma sessão SSH, quando escrevo um buffer para o disco (ou seja, :w ) ocasionalmente, enquanto o Vim diz que está escrito, o arquivo permanece inalterado. Na verdade, muitas vezes, quando isso acontece, o Vim reclama do arquivo que já foi alterado porque, presumivelmente, a versão .swp do arquivo está mais adiantada do que o esperado.

Para algumas vezes contornar este problema, salve em um novo arquivo, saia, exclua o antigo e renomeie o novo. Mais frequentemente, porém, o efeito passa despercebido e acabo perdendo o trabalho ... É muito frustrante!

Alguma idéia do que está acontecendo aqui? Isso acontece apenas no tmux e eu sou o único usuário que se conecta à sessão. Se eu fechar a sessão do tmux (em vez de desanexar), o Vim não reclama mais do arquivo de troca quando eu fizer login novamente.

Eu posso consistentemente replicar isso (ou similar, pelo menos) fazendo o seguinte:

  1. Iniciar uma nova sessão do tmux
  2. vim foo.txt
  3. Escreva algo e escreva
  4. Detatch da sessão do tmux
  5. Recoloque a sessão do tmux
  6. Sair do vim
  7. vim foo.txt

O Vim agora reclamará que existe um arquivo de troca para foo.txt (por exemplo, .foo.txt.swp ), embora não pareça haver um no diretório atual.

    
por Xophmeister 18.07.2013 / 15:44

1 resposta

0

Escrever um arquivo no vim não altera nenhum arquivo. O arquivo antigo é substituído por um novo arquivo, deixando o arquivo antigo inalterado. Então, se você tiver o arquivo antigo aberto em algum outro lugar, não verá nenhuma alteração. O Vim não foi projetado para modificar um arquivo enquanto algum outro programa o está usando.

    
por 18.07.2013 / 20:58