Visual Studio Code: automatyczne odświeżanie zmian w pliku

100

Pracując z Visual Studio Code Zauważyłem, że jeśli plik, z którym pracujesz, zmienia się, za każdym razem, gdy ten plik zostanie skoncentrowany w panelu kodu, zostanie ponownie załadowany z dysku (jeśli nie masz zmian w pliku za pomocą VSCode) .

Jeśli jednak jesteś w tym pliku, nie ma ostrzeżenia o zmianach w pliku.

Przeglądałem ustawienia i nie mogę znaleźć niczego podobnego do opcji Visual Studio:

Wykryj, kiedy plik zostanie zmieniony poza środowiskiem

Więc moje pytanie: czy jest jakieś ukryte ustawienie lub jakiś hack, który sprawi, że pojawi się to ostrzeżenie.

Aktualizacja

Rozwiązany w wersji 0.3.0 programu Visual Studio Code.

  1. Plik zostanie zaktualizowany z dysku, jeśli nie ma zmian w edytorze. (bardzo przydatne do odczytu plików dziennika podczas wykonywania procesu)
  2. Jeśli są zmiany po obu stronach (z dysku i przez edytor), kiedy kiedykolwiek spróbujesz zapisać plik przy użyciu VSCode, edytor ostrzeże Cię o takiej sytuacji (np. „Brudne zapisy”), a porównanie plików pozwoli Ci zdecydować co robić.
Juan M. Elosegui
źródło
1
jeśli masz zmiany, dlaczego ich NIE chcesz?
John Papa
12
@JohnPapa Próbuję uzyskać to samo zachowanie, które znajduję w Visual Studio lub wysublimowanym tekście. Jeśli nie wprowadzę żadnych zmian w IDE, plik w IDE powinien zostać zaktualizowany do najnowszej wersji z dysku twardego. Jeśli mam zmiany w IDE, a także poza IDE, powinno pojawić się ostrzeżenie z ostrzeżeniem o tej sytuacji. Coś w rodzaju „Plik xxx zmienił się na dysku. Czy chcesz go ponownie załadować?”
Juan M. Elosegui,
Zobacz stackoverflow.com/questions/54995008/ ... i github.com/microsoft/vscode-docs/blob/vnext/release-notes/ ..., aby zapoznać się z niektórymi zmianami w tym zachowaniu, w tym możliwością zablokowania powiadomienia, jeśli chcesz.
Mark
@johnPapa easy. Powiedzmy, że edytujesz plik myśląc, że to inny plik. Nagle zdajesz sobie z tego sprawę i chcesz stracić swoje zmiany. Lub, co bardziej istotne, kupujesz inną gałąź git. Prawie każdy inny edytor, taki jak notepad ++, natychmiast powie "plik zmienił się na dysku. Czy chcesz go przeładować ?. Vscode nie wykryje tego, a ty możesz wprowadzić zmiany i zapisać, a na koniec nadpisać niewłaściwą gałąź, co jest straszne. wierzę, że nadal mam ten problem w 2020 roku
Gostega

Odpowiedzi:

64

VSCode nigdy nie odświeży pliku, jeśli masz zmiany w tym pliku, które nie są zapisane na dysku. Jeśli jednak plik jest otwarty i nie zawiera zmian, zostanie on zastąpiony zmianami na dysku, to prawda.

Obecnie nie ma możliwości wyłączenia tego zachowania.

Benjamin Pasero
źródło
52
Wszyscy inni redaktorzy to mają. Niektóre pliki mogą zostać przypadkowo zmodyfikowane przez użytkownika, ale to, czego naprawdę chce, to usłyszeć, że plik zmienił się na dysku i zapytać, czy chcą załadować ponownie, przynajmniej przez okienko powiadomień w edytorze.
Warren P
4
Inni redaktorzy mogą to mieć, ale to zachowanie utrzymuje się nawet podczas zamykania i ponownego otwierania VSCode, co jest bardzo niebezpieczne, jeśli nie spodziewasz się, że tak się stanie. Być może masz otwartych 10 plików, wróć do VS2017, a następnie wróć do VSCode 2 dni później i „zapisz wszystko” .....
Simon_Weaver,
6
@Ingemar Naprawdę chciałem dać VSCode ujęcie (nie tylko dla Angular Intellisense) i być może przełączać się między VS2017 i VSCode. Często dokonywałem zmian w VSCode, ale ich nie zapisywałem, a potem zmieniałem ten sam plik w VS2017. Przełączę się z powrotem do VSCode i przypadkowo ponownie zapiszę plik po mojej zmianie (nawet po zamknięciu / ponownym otwarciu). W ciągu zaledwie kilku dni moja zmiana zniknęła co najmniej dwukrotnie i kiedy w końcu zrozumiałem, dlaczego był to dla mnie właściwie koniec VSCode. Przynajmniej VSCode powinien ostrzegać podczas zapisywania pliku, który został zmodyfikowany zewnętrznie od czasu otwarcia w VSCode.
Simon_Weaver,
4
Ta odpowiedź ma teraz 3 lata, czy ktoś otworzył sprawę w tej sprawie? Czy możesz zamieścić link tutaj?
Fabio mówi Przywróć Monikę
19
File: Revert Filemoże być użyty do pobrania nowej zawartości z dysku.
Benjamin Pasero
27
{
    "files.useExperimentalFileWatcher" : true
}

w Kod -> Preferencje -> Ustawienia

Przetestowano za pomocą programu Visual Studio Code w wersji 1.26.1 na komputerze Mac i Win

Wygrał Jun Bae
źródło
3
U mnie to nie działa (VSCode 1.26.1 na Windows 10): gdy plik jest modyfikowany zewnętrznie, jeśli w Kodzie nie ma zmian, jest po cichu przeładowywany, w przeciwnym razie nic nie zrobi, a potem przy próbie zapisu ostrzeże mnie o konflikcie, oferując rozwiązanie go przez porównanie dwóch wersji. Wszystko to dzieje się niezależnie od tego files.useExperimentalFileWatcher, ponieważ próbowałem zarówno prawdy, jak i fałszu i nie widziałem żadnej różnicy.
Fabio mówi Przywróć Monikę
5
Wersja 1.28.2 (1.28.2) Code -> Preferences -> Settingsi wyszukaj hasło „watcher” Zaznacz pole. Pracuje dla mnie.
Shanimal
2
Cholera, to zjada procesor jak szalony na Linuksie.
abhi1010
9
@WonJunBae Co to robi? Podaj opis rekomendowanej funkcji.
1,21 gigawata
5
Nieznane ustawienie konfiguracji w VSCode 1.41.1
Josh Correia
2

SUPER-SHIFT-p > File: Revert File to jedyne wyjście

(gdzie SUPERjest Commandna Macu i Ctrlna PC)

David 天宇 Wong
źródło