Код Visual Studio: автоматическое обновление изменений файла

100

Работая с Visual Studio Code, я заметил, что если файл, с которым вы работаете, изменяется, всякий раз, когда этот файл фокусируется на панели кода, он будет перезагружен с диска (если у вас нет изменений в файле через VSCode) .

Однако, если вы работаете с этим файлом, предупреждения об изменениях файла не выводятся.

Я просматривал настройки и не нашел ничего похожего на вариант визуальной студии:

Обнаруживать, когда файл изменяется вне среды

Итак, мой вопрос: есть ли какие-то скрытые настройки или какие-то взломы, чтобы это предупреждение произошло.

Обновить

Решено в версии 0.3.0 Visual Studio Code.

  1. Файл будет обновлен с диска, если в редакторе нет изменений. (очень полезно для чтения файлов журнала во время выполнения процесса)
  2. Если есть изменения с обеих сторон (с диска и через редактор), когда вы пытаетесь сохранить файл с помощью VSCode, редактор предупредит вас об этой ситуации (т.е. «грязные записи»), и сравнение файлов позволит вам решить что делать.
Хуан М. Элосеги
источник
1
если у вас есть изменения, почему они вам НЕ нужны?
Джон Папа
12
@JohnPapa Я пытаюсь добиться того же поведения, что и в визуальной студии или возвышенном тексте. Если у меня нет изменений через IDE, файл в IDE должен быть обновлен до последней версии с жесткого диска. Если у меня есть изменения через IDE, а также за пределами IDE, должно появиться предупреждение об этой ситуации. Что-то вроде «Файл xxx изменился на диске. Вы хотите его перезагрузить?»
Хуан М. Элосеги,
См. Stackoverflow.com/questions/54995008/… и github.com/microsoft/vscode-docs/blob/vnext/release-notes/…, чтобы узнать о некоторых изменениях этого поведения, в том числе о возможности предотвращения уведомления, если хотите.
Марк
@johnPapa просто. Допустим, вы редактировали файл, думая, что это другой файл. Вы внезапно понимаете это и хотите потерять свои изменения. Или, что более важно, вы проверяете другую ветку git. Практически любой другой редактор, такой как notepad ++, сразу скажет: «Файл на диске был изменен. Вы хотите перезагрузить?». Vscode не обнаружит его, и вы можете внести изменения и сохранить и в конечном итоге перезаписать неправильную ветку, что ужасно. Не верю, что у меня все еще будет эта проблема в 2020 году
Гостега

Ответы:

65

VSCode никогда не обновит файл, если в нем есть изменения, не сохраненные на диск. Однако, если файл открыт и в нем нет изменений, он заменит изменения на диске, что верно.

В настоящее время нет возможности отключить это поведение.

Бенджамин Пасеро
источник
52
У всех других редакторов это есть. Некоторые файлы могут быть случайно изменены пользователем, но на самом деле пользователь хочет, чтобы ему сказали, что этот файл был изменен на диске, и спросили, хотят ли они его перезагрузить, по крайней мере, через панель уведомлений в редакторе.
Warren P
4
Другие редакторы могут иметь это, но такое поведение сохраняется даже при закрытии и повторном открытии VSCode, что очень опасно, если вы не ожидаете, что это произойдет. У вас может быть открыто 10 файлов, вы вернетесь к VS2017, а затем вернетесь к VSCode через 2 дня и выполните «сохранить все» ...
Simon_Weaver
6
@Ingemar Я действительно хотел дать VSCode шанс (не в последнюю очередь для Angular intellisense) и, возможно, переключиться между VS2017 и VSCode. Я часто вносил изменения в VSCode, но не сохранял их, а затем менял тот же файл в VS2017. Я бы переключился обратно на VSCode и случайно повторно сохранил файл после моего изменения (даже после закрытия / повторного открытия). Всего за пару дней мои изменения исчезли как минимум дважды, и однажды я наконец понял, почему для меня это был конец VSCode. По крайней мере, VSCode должен предупреждать, когда вы сохраняете файл, который был изменен извне с момента его открытия в VSCode.
Simon_Weaver
4
Этому ответу сейчас 3 года, кто-нибудь открывал вопрос по этому поводу? Не могли бы вы разместить ссылку здесь?
Фабио говорит: "Восстановите Монику"
19
File: Revert Fileможет использоваться для получения свежего содержимого с диска.
Бенджамин
27
{
    "files.useExperimentalFileWatcher" : true
}

в Коде -> Настройки -> Настройки

Протестировано с помощью Visual Studio Code версии 1.26.1 на Mac и выиграно

Вон Чжун Бэ
источник
3
У меня это не работает (VSCode 1.26.1 в Windows 10): когда файл изменяется извне, если в коде нет изменений, он молча перезагружается, иначе он ничего не сделает, а затем, когда я попытаюсь сохранить он предупредит меня о конфликте, предложив решить его, сравнив 2 версии. Все это происходит независимо от того files.useExperimentalFileWatcher, поскольку я пробовал и истину, и ложь, и я не заметил никакой разницы.
Фабио говорит: "Восстановите Монику"
5
Версия 1.28.2 (1.28.2) Code -> Preferences -> Settingsи поиск по запросу "наблюдатель" Установите флажок. Работает для меня.
Shanimal
2
Блин, это как сумасшедшее жрет CPU в Linux.
abhi1010
9
@WonJunBae Что это делает? Пожалуйста, опишите эту функцию, которую вы рекомендуете.
1,21 гигаватт
5
Неизвестный параметр конфигурации на VSCode 1.41.1
Джош Коррейя,
2

SUPER-SHIFT-p > File: Revert File единственный способ

(где SUPERесть Commandна Mac и Ctrlна ПК)

Дэвид 天宇 Вонг
источник