Visual Studio Code: การเปลี่ยนแปลงไฟล์รีเฟรชอัตโนมัติ


102

การทำงานกับ Visual Studio รหัสฉันได้สังเกตเห็นว่าไฟล์ที่คุณกำลังทำงานกับการเปลี่ยนแปลงเมื่อใดก็ตามที่ได้รับไฟล์ที่มุ่งเน้นในแผงรหัสมันจะถูกโหลดจากดิสก์(ถ้าคุณไม่ได้มีการเปลี่ยนแปลงในไฟล์ผ่าน VSCode)

อย่างไรก็ตามหากคุณอยู่ในไฟล์นั้นจะไม่มีการแจ้งเตือนที่จะเตือนคุณเกี่ยวกับการเปลี่ยนแปลงไฟล์

ฉันตรวจสอบการตั้งค่าแล้ว แต่ไม่พบตัวเลือก Visual Studio:

ตรวจจับเมื่อไฟล์มีการเปลี่ยนแปลงนอกสภาพแวดล้อม

คำถามของฉัน: มีการตั้งค่าใด ๆ ที่ซ่อนอยู่หรือมีการแฮ็กเพื่อให้คำเตือนนั้นเกิดขึ้น

อัปเดต

แก้ไขในเวอร์ชัน 0.3.0 ของ Visual Studio Code

  1. ไฟล์จะได้รับการอัพเดตจากดิสก์หากไม่มีการเปลี่ยนแปลงผ่านตัวแก้ไข (มีประโยชน์มากในการอ่านไฟล์บันทึกระหว่างการดำเนินการตามกระบวนการ)
  2. หากมีการเปลี่ยนแปลงทั้งสองด้าน (จากดิสก์และผ่านตัวแก้ไข) เมื่อคุณพยายามบันทึกไฟล์โดยใช้ VSCode ตัวแก้ไขจะเตือนคุณเกี่ยวกับสถานการณ์นั้น (เช่น "การเขียนสกปรก") และการเปรียบเทียบไฟล์จะช่วยให้คุณตัดสินใจได้ จะทำอย่างไร.

1
หากคุณมีการเปลี่ยนแปลงทำไมคุณถึงไม่ต้องการ
John Papa

12
@JohnPapa ฉันพยายามทำตัวแบบเดียวกับที่ฉันพบในวิชวลสตูดิโอหรือข้อความประเสริฐ หากฉันไม่มีการเปลี่ยนแปลงผ่าน IDE ไฟล์บน IDE ควรได้รับการอัปเดตเป็นเวอร์ชันล่าสุดจาก HDD หากฉันมีการเปลี่ยนแปลงผ่าน IDE และนอก IDE คำเตือนควรปรากฏขึ้นเพื่อแจ้งเตือนสถานการณ์นั้น บางอย่างเช่น "ไฟล์ xxx มีการเปลี่ยนแปลงในดิสก์คุณต้องการโหลดใหม่หรือไม่"
Juan M. Elosegui

โปรดดูstackoverflow.com/questions/54995008/…และgithub.com/microsoft/vscode-docs/blob/vnext/release-notes/…สำหรับการเปลี่ยนแปลงพฤติกรรมนี้รวมถึงความสามารถในการป้องกันการแจ้งเตือนหากคุณต้องการ
มาระโก

@johnPapa ง่ายนิดเดียว. สมมติว่าคุณกำลังแก้ไขไฟล์โดยคิดว่าเป็นไฟล์อื่น จู่ๆคุณก็ตระหนักและต้องการที่จะสูญเสียการเปลี่ยนแปลงของคุณ หรือที่เกี่ยวข้องมากขึ้นคุณชำระเงินสาขาคอมไพล์อื่น ตัวแก้ไขอื่น ๆ เกือบทั้งหมดเช่น notepad ++ จะพูดทันทีว่า "ไฟล์มีการเปลี่ยนแปลงบนดิสก์คุณต้องการโหลดซ้ำหรือไม่ Vscode จะตรวจไม่พบและคุณสามารถทำการเปลี่ยนแปลงและบันทึกและเขียนทับสาขาที่ไม่ถูกต้องซึ่งแย่มากได้ ' ไม่เชื่อว่าฉันยังคงมีปัญหานี้ในปี 2020
Gostega

คำตอบ:


66

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 ขวบมีใครเปิดประเด็นเกี่ยวกับเรื่องนี้บ้าง? กรุณาโพสต์ลิงค์ที่นี่ได้ไหม
Fabio กล่าว Reinstate Monica

21
File: Revert Fileสามารถใช้เพื่อรับเนื้อหาใหม่จากดิสก์
Benjamin Pasero

27
{
    "files.useExperimentalFileWatcher" : true
}

ใน Code -> Preferences -> Settings

ทดสอบด้วย Visual Studio Code เวอร์ชัน 1.26.1 บน mac และชนะ


3
มันใช้ไม่ได้สำหรับฉัน (VSCode 1.26.1 บน Windows 10): เมื่อไฟล์ถูกแก้ไขจากภายนอกหากใน Code ไม่มีการเปลี่ยนแปลงใด ๆ มันจะถูกโหลดใหม่โดยไม่โต้ตอบมิฉะนั้นจะไม่ทำอะไรเลยจากนั้นเมื่อฉันพยายามบันทึก มันจะเตือนฉันเกี่ยวกับความขัดแย้งโดยเสนอให้แก้ไขโดยการเปรียบเทียบ 2 เวอร์ชัน ทั้งหมดนี้เกิดขึ้นไม่files.useExperimentalFileWatcherว่าฉันจะลองทั้งจริงและเท็จ แต่ฉันก็ไม่เห็นความแตกต่างใด ๆ
Fabio กล่าว Reinstate Monica

5
เวอร์ชัน 1.28.2 (1.28.2) Code -> Preferences -> Settingsและค้นหา "watcher" ทำเครื่องหมายในช่อง เหมาะสำหรับฉัน
Shanimal

2
ไอ้ที่กิน CPU อย่างบ้าคลั่งบน Linux
abhi1010

9
@WonJunBae นี้ทำอะไร? โปรดให้คำอธิบายสำหรับคุณลักษณะนี้ที่คุณกำลังแนะนำ
1.21 กิกะวัตต์

5
การตั้งค่าคอนฟิกที่ไม่รู้จักบน VSCode 1.41.1
Josh Correia

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.