Visual Studio Code: Thay đổi tệp tự động làm mới


100

Làm việc với Visual Studio Code Tôi đã nhận thấy nếu tệp bạn đang làm việc có thay đổi, bất cứ khi nào tệp đó được đặt tiêu điểm trong bảng mã, nó sẽ được tải lại từ đĩa (nếu bạn không có thay đổi trong tệp thông qua VSCode) .

Tuy nhiên, nếu bạn đang ở trên tệp đó, không có cảnh báo nào để cảnh báo bạn về các thay đổi tệp.

Tôi đang xem xét các cài đặt và tôi không thể tìm thấy bất kỳ thứ gì giống như tùy chọn studio trực quan:

Phát hiện khi tệp bị thay đổi bên ngoài môi trường

Vì vậy, câu hỏi của tôi: Có bất kỳ cài đặt ẩn hoặc một số hack để làm cho cảnh báo đó xảy ra.

Cập nhật

Được giải quyết trong phiên bản 0.3.0 của Visual Studio Code.

  1. Tệp sẽ được cập nhật từ đĩa nếu không có thay đổi nào thông qua trình chỉnh sửa. (rất hữu ích để đọc các tệp nhật ký trong quá trình thực thi)
  2. Nếu có những thay đổi trên cả hai mặt (từ đĩa và thông qua trình chỉnh sửa) khi bạn cố gắng lưu tệp bằng VSCode, trình chỉnh sửa sẽ cảnh báo bạn về tình huống đó (tức là "ghi bẩn") và so sánh tệp sẽ cho phép bạn quyết định phải làm gì.

1
nếu bạn có những thay đổi, tại sao bạn KHÔNG muốn chúng?
John Papa

12
@JohnPapa Tôi đang cố gắng có được hành vi tương tự như tôi tìm thấy trong studio trực quan hoặc văn bản siêu phàm. Nếu tôi không có thay đổi nào thông qua IDE, tệp trên IDE phải được cập nhật lên phiên bản mới nhất từ ​​ổ cứng. Nếu tôi có những thay đổi thông qua IDE và cả bên ngoài IDE, một cảnh báo sẽ xuất hiện để cảnh báo về tình huống đó. Một cái gì đó như "Tệp xxx đã thay đổi trên đĩa. Bạn có muốn tải lại nó không?"
Juan M. Elosegui

Xem stackoverflow.com/questions/54995008/…github.com/microsoft/vscode-docs/blob/vnext/release-notes/… để biết một số thay đổi đối với hành vi này, bao gồm khả năng ngăn thông báo nếu bạn muốn.
Đánh dấu

@johnPapa dễ dàng. Giả sử bạn đang chỉnh sửa một tệp vì nghĩ rằng đó là một tệp khác. Bạn chợt nhận ra điều đó và muốn đánh mất những thay đổi của mình. Hoặc liên quan hơn, bạn kiểm tra một nhánh git khác. Hầu như bất kỳ trình soạn thảo nào khác chẳng hạn như notepad ++ sẽ ngay lập tức nói "tệp đã thay đổi trên đĩa. Bạn có muốn tải lại không? Vscode sẽ không phát hiện ra nó, và bạn có thể thực hiện các thay đổi và lưu và kết thúc ghi đè nhánh sai, điều đó thật tồi tệ. Có thể" Tôi tin rằng tôi vẫn gặp sự cố này vào năm 2020
Gostega

Câu trả lời:


64

VSCode sẽ không bao giờ làm mới tệp nếu bạn có các thay đổi trong tệp đó chưa được lưu vào đĩa. Tuy nhiên, nếu tệp đang mở và không có thay đổi, nó sẽ thay thế bằng những thay đổi trên đĩa, điều đó đúng.

Hiện tại không có cách nào để vô hiệu hóa hành vi này.


52
Các biên tập viên khác đều có điều này. Một số tệp có thể bị người dùng vô tình sửa đổi nhưng điều người dùng thực sự muốn là được thông báo rằng tệp này đã thay đổi trên đĩa và được hỏi liệu họ có muốn tải lại hay không, ít nhất là thông qua một số ngăn thông báo trên trình chỉnh sửa.
Warren P

4
Các trình soạn thảo khác có thể có điều này nhưng hành vi này vẫn tồn tại ngay cả khi đóng và mở lại VSCode, điều này rất nguy hiểm nếu bạn không mong muốn điều đó xảy ra. Bạn có thể có 10 tác phẩm mở, quay trở lại VS2017 và sau đó trở lại VSCode 2 ngày sau đó và làm 'tiết kiệm tất cả' .....
Simon_Weaver

6
@Ingemar Tôi thực sự muốn thử VSCode (không nhất là đối với Angular intellisense) và có lẽ chuyển đổi giữa VS2017 và VSCode. Tôi thường thực hiện thay đổi trong VSCode nhưng không lưu nó, sau đó cuối cùng thay đổi cùng một tệp trong VS2017. Tôi muốn chuyển về VSCode và vô tình lưu lại tệp theo thay đổi của mình (ngay cả sau khi đóng / mở lại). Chỉ trong một vài ngày, thay đổi của tôi đã biến mất ít nhất hai lần và một khi tôi cuối cùng đã tìm ra lý do tại sao nó lại là dấu chấm hết cho VSCode đối với tôi. Ít nhất thì VSCode phải cảnh báo khi bạn lưu một tệp đã được sửa đổi bên ngoài kể từ khi nó được mở trong VSCode.
Simon_Weaver

4
Câu trả lời này hiện đã được 3 năm, có ai đã mở một vấn đề về điều này? Bạn có thể xin vui lòng đăng liên kết ở đây?
Fabio nói Hãy phục hồi Monica vào

19
File: Revert Filecó thể được sử dụng để lấy nội dung mới từ đĩa.
Benjamin Pasero

27
{
    "files.useExperimentalFileWatcher" : true
}

trong Mã -> Tùy chọn -> Cài đặt

Đã thử nghiệm với phiên bản mã Visual Studio 1.26.1 trên mac và win


3
Nó không hoạt động đối với tôi (VSCode 1.26.1 trên Windows 10): khi một tệp được sửa đổi bên ngoài, nếu trong Mã không có thay đổi, nó sẽ được tải lại một cách âm thầm, nếu không nó sẽ không làm gì cả và sau đó khi tôi cố gắng lưu nó sẽ cảnh báo tôi về xung đột, đề nghị giải quyết nó bằng cách so sánh 2 phiên bản. Tất cả những điều này xảy ra bất kể files.useExperimentalFileWatcher, vì tôi đã thử cả đúng và sai, và tôi không thấy bất kỳ sự khác biệt nào.
Fabio nói Hãy phục hồi Monica vào

5
Phiên bản 1.28.2 (1.28.2) Code -> Preferences -> Settingsvà tìm kiếm "người xem" Chọn hộp. Làm việc cho tôi.
Shanimal

2
Chết tiệt, nó ăn CPU như điên trên Linux.
abhi1010

9
@WonJunBae Cái này làm được gì? Vui lòng đưa ra mô tả cho tính năng này mà bạn đang đề xuất.
1,21 gigawatt vào

4
Cài đặt cấu hình không xác định trên VSCode 1.41.1
Josh Correia

1

SUPER-SHIFT-p > File: Revert File là cách duy nhất

(nơi SUPERCommandtrên Mac và Ctrltrên máy tính)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.