O arquivo solicitante do Vim foi alterado após o git pull

1

Meu fluxo de trabalho envolve a edição de muitos arquivos em vim e, ocasionalmente, eu faço git pull --rebase , o que pode ou não alterar os arquivos que estou editando. No entanto, após esse rebase, vim sempre achará que todos os arquivos foram modificados e me avisará que "o arquivo foi alterado do original, tem certeza de que deseja editá-lo?" quando faço uma modificação e tento salvar um arquivo que está aberto. Isso se torna extremamente irritante, porque eu realmente não tenho certeza se o arquivo foi alterado ou não, e se está tudo bem ou não para salvar minha alteração (e muito menos ser solicitado isso para cada arquivo que eu tento salvar).

Existe uma maneira de tornar vim mais inteligente sobre esses arquivos modificados? Eu preferiria fazer isso SEM um grande pacote vim / git .

    
por bobdole 12.06.2015 / 18:19

1 resposta

0

Se você ainda não modificou o arquivo, mas ele está aberto, então você o atualiza fora do Vim, então o Vim deve solicitar que você recarregue o arquivo, ou mesmo (se apenas o timestamp for alterado) ) atualize automaticamente para você. Mas o Vim só verifica isso quando executa um comando externo, ou quando obtém foco de entrada após ter perdido o foco de entrada (o que só acontece de forma confiável no gVim e em algumas versões de terminal). Se você estiver usando o terminal Vim, provavelmente precisará adicionar chamadas manualmente a :checktime em um autocmd apropriado, por exemplo, CursorHold , CursorMoved , BufEnter ou outro evento que seja acionado com freqüência. Veja este exemplo de autocmds para executar: checktime e também algumas das outras respostas sobre essa questão para detalhes.

Uma vez que você tenha verificado, de maneira confiável, arquivos modificados pelo Vim, você também pode personalizar o que o Vim faz quando detecta um registro de data e hora modificado, usando o evento FileChangedShell autocmd. Este autocmd permite que você defina a variável v:fcs_choice para "reload", "ask" ou "" (string vazia) para dizer ao Vim o que fazer, e você provavelmente poderia fazer algo louco como iniciar um diff com o arquivo em disco Se você quisesse. O Vim pode detectar e agir separadamente nos seguintes cenários (armazenados em v:fcs_reason ):

deleted     file no longer exists
conflict    file contents, mode or timestamp was
            changed and buffer is modified
changed     file contents has changed
mode        mode of file changed
time        only file timestamp changed

Veja link para um exemplo completo de uso do evento FileChangedShell.

    
por 16.06.2015 / 15:38

Tags