Código do Visual Studio: atualização automática de alterações de arquivos

100

Trabalhando com o código do Visual Studio Notei que se um arquivo com o qual você está trabalhando muda, sempre que esse arquivo for focado em um painel de código, ele será recarregado do disco (se você não tiver alterações no arquivo por meio do VSCode) .

No entanto, se você estiver nesse arquivo, não haverá nenhum alerta para avisá-lo sobre alterações no arquivo.

Estive revisando as configurações e não consigo encontrar nada parecido com a opção do Visual Studio:

Detectar quando o arquivo é alterado fora do ambiente

Portanto, minha pergunta: existe alguma configuração oculta ou algum hack para fazer esse aviso acontecer.

Atualizar

Resolvido na versão 0.3.0 do Visual Studio Code.

  1. O arquivo será atualizado do disco se não houver mudanças por meio do editor. (muito útil para ler arquivos de log durante a execução de um processo)
  2. Se houver mudanças em ambos os lados (do disco e através do editor) sempre que você tentar salvar o arquivo usando VSCode, o editor irá avisá-lo sobre essa situação (ou seja, "gravações sujas") e uma comparação de arquivos permitirá que você decida o que fazer.
Juan M. Elosegui
fonte
1
se você tem mudanças, por que você NÃO as quer?
John Papa
12
@JohnPapa Estou tentando obter o mesmo comportamento que encontro em estúdio visual ou texto sublime. Se eu não tiver alterações por meio do IDE, o arquivo no IDE deve ser atualizado para a versão mais recente do HDD. Se eu tiver mudanças por meio do IDE e também fora do IDE, um aviso deve ser exibido alertando sobre essa situação. Algo como "O arquivo xxx foi alterado no disco. Deseja recarregá-lo?"
Juan M. Elosegui
Consulte stackoverflow.com/questions/54995008/… e github.com/microsoft/vscode-docs/blob/vnext/release-notes/… para algumas alterações neste comportamento, incluindo a capacidade de evitar a notificação, se desejar.
Marcos
@johnPapa easy. Digamos que você esteja editando um arquivo pensando que é um arquivo diferente. De repente, você percebe isso e quer perder suas alterações. Ou mais relevante, você verifica um branch git diferente. Quase qualquer outro editor, como o notepad ++, dirá imediatamente "o arquivo foi alterado no disco. Você deseja recarregar? O Vscode não o detectará e você pode fazer alterações e salvar e acabar substituindo o branch errado, o que é terrível. Pode" Acho que ainda estou tendo esse problema em 2020
Gostega,

Respostas:

64

O VSCode nunca atualizará o arquivo se houver alterações nesse arquivo que não foram salvas no disco. Porém, se o arquivo estiver aberto e não tiver alterações, ele será substituído pelas alterações no disco, isso é verdade.

Atualmente, não há como desativar esse comportamento.

Benjamin Pasero
fonte
52
Todos os outros editores têm isso. Alguns arquivos podem ser modificados acidentalmente pelo usuário, mas o que o usuário realmente deseja é ser informado de que o arquivo foi alterado no disco e perguntado se deseja recarregar, pelo menos por meio de algum painel de notificação no editor.
Warren P
4
Outros editores podem ter isso, mas esse comportamento persiste mesmo ao fechar e reabrir o VSCode, o que é muito perigoso se você não esperar que isso aconteça. Você pode ter 10 arquivos abertos, volte para VS2017 e então volte para VSCode 2 dias depois e faça 'salvar todos' .....
Simon_Weaver
6
@Ingemar Eu realmente queria dar uma chance ao VSCode (principalmente para o Angular intellisense) e talvez alternar entre o VS2017 e o VSCode. Eu costumava fazer uma alteração no VSCode, mas não salvá-lo, e acabava alterando o mesmo arquivo no VS2017. Eu voltaria para o VSCode e, acidentalmente, salvaria novamente o arquivo sobre a minha alteração (mesmo após fechar / reabrir). Em apenas alguns dias minha mudança desapareceu pelo menos duas vezes e uma vez eu finalmente descobri por que era praticamente o fim do VSCode para mim. No mínimo, o VSCode deve avisar quando você salvar um arquivo que foi modificado externamente desde que foi aberto no VSCode.
Simon_Weaver
4
Esta resposta já tem 3 anos, alguém abriu uma questão sobre isso? Você pode postar o link aqui?
Fabio diz Restabelecer Monica em
19
File: Revert Filepode ser usado para obter novos conteúdos do disco.
Benjamin Pasero
27
{
    "files.useExperimentalFileWatcher" : true
}

em Código -> Preferências -> Configurações

Testado com Visual Studio Code versão 1.26.1 no mac e win

Ganhou Jun Bae
fonte
3
Não funciona para mim (VSCode 1.26.1 no Windows 10): quando um arquivo é modificado externamente, se no Código não houver alterações ele é recarregado silenciosamente, caso contrário não fará nada e então quando tento salvar ele vai me avisar sobre o conflito, oferecendo-se para resolvê-lo comparando as 2 versões. Tudo isso acontece independentemente de files.useExperimentalFileWatcher, pois tentei tanto o verdadeiro quanto o falso e não vi nenhuma diferença.
Fabio diz Restabelecer Monica
5
Versão 1.28.2 (1.28.2) Code -> Preferences -> Settingse pesquise "observador" Marque a caixa. Funciona para mim.
Shanimal
2
Droga, isso consome CPU como um louco no Linux.
abhi1010
9
@WonJunBae O que isso faz? Por favor, dê uma descrição para este recurso que você está recomendando.
1,21 gigawatts
4
Definição de configuração desconhecida no VSCode 1.41.1
Josh Correia
1

SUPER-SHIFT-p > File: Revert File é o único caminho

(onde SUPERestá Commandno Mac e Ctrlno PC)

David 天宇 Wong
fonte