วิธีการให้ Emacs ทำการรีเฟรชบัฟเฟอร์ทั้งหมดโดยอัตโนมัติเมื่อไฟล์มีการเปลี่ยนแปลงบนดิสก์?


176

ฉันมีการค้นหาระดับโลกที่ไม่ใช่ emacs และแทนที่ฟังก์ชั่นที่ทำให้ไฟล์ดิสก์ของฉันทันสมัยกว่าบัฟเฟอร์ emacs ของฉัน (en masse) มีวิธีใดที่จะบอกให้ emacs รีเฟรชบัฟเฟอร์ทั้งหมดจากดิสก์ในคราวเดียวล้มเหลวแทนที่จะต้องทำทีละตัวด้วยการโหลดไฟล์ซ้ำ?

ขอบคุณ! D


โหมดการเปลี่ยนกลับอัตโนมัติทั่วโลกทำเวทมนตร์ ...
Jorge Aguilar

คำตอบ:


229

(global-auto-revert-mode t)ในของคุณ.emacs


นี่ดูดีในกรณีที่ฉันต้องการซิงค์อยู่เสมอขอบคุณ! ฉันคิดว่าฉันจะจบลงด้วยการใช้ revbuffs เพื่อให้ฉันสามารถจัดการความขัดแย้งด้วยตัวเอง (ไม่เช่นนั้นบางครั้งฉันอาจสูญเสียการเปลี่ยนแปลงที่ไม่ได้บันทึกวิธีการทำงานของเวิร์กโฟลว์ปัจจุบัน)
Dave

2
ขอบคุณ! ฉันใช้การผสมผสานระหว่าง revbuffs และโหมดเปลี่ยนกลับอัตโนมัติ โหมดเปลี่ยนกลับอัตโนมัติทำงานได้ดีเมื่อฉันต้องการเขียนทับการเปลี่ยนแปลง
Natan Yellin

12
@Dave: (global-) auto-reverse-mode จะไม่คืนค่าไฟล์หากบัฟเฟอร์ที่สอดคล้องถูกแก้ไขดังนั้นจึงไม่มีความเสี่ยงที่คุณจะสูญเสียการเปลี่ยนแปลงที่ไม่ได้บันทึก
Lindydancer

ฉันได้ตั้งค่าตัวแปรเป็น. emacs แต่เมื่อฉันแก้ไขโค้ด xcode บางส่วนจากนั้นอ่านไฟล์ (เปิดแล้ว) ที่บรรทัดนั้นแก้ไขใน xcode ที่นั่นไม่จำเป็นต้องใช้ Mx revert-buffer อย่างคล่องแคล่ว (mac + emacs 24.3.1)
ericfang

6
ทำงานได้ดีเมื่อสลับกับ git ขอบคุณ!
Justin Leitgeb

10

นี่เป็นอีกทางเลือกหนึ่งถ้าคุณใช้ Emacs GUI (Mine is GNU Emacs 25.1.1 บน Windows 7):

  1. คลิก"ตัวเลือก"ในเมนู
  2. เลือก"ปรับแต่ง Emacs"
  3. เลือก"ตัวเลือกที่บันทึกไว้"
  4. แล้วคุณจะเห็นช่องค้นหาที่คุณป้อน"ทั่วโลกอัตโนมัติย้อนโหมด"และกด"ค้นหา"ปุ่ม
  5. คลิกปุ่ม"สลับ"และตรวจสอบให้แน่ใจว่าได้อ่าน"บน"ทางด้านขวาของปุ่ม
  6. กดปุ่ม"ใช้และบันทึก"ด้านล่างช่องค้นหา

หากคุณมีไฟล์เปิดอยู่สองสามไฟล์คุณควรเห็นผลกระทบที่เกิดขึ้นทันที โชคดี!


3

ขอขอบคุณที่ @Ashwin (global-auto-revert-mode t)สำหรับการชี้ออก ฉันพบว่า Emacs จะไม่อัปเดตบัฟเฟอร์โดยอัตโนมัติซึ่งไฟล์มีการเปลี่ยนแปลงบนดิสก์ด้วยการเปลี่ยนแปลงนี้เพียงอย่างเดียว จากhttps://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

ตามค่าเริ่มต้นโหมดการย้อนกลับอัตโนมัติจะทำงานโดยใช้การแจ้งเตือนไฟล์ซึ่งการเปลี่ยนแปลงในระบบไฟล์จะถูกรายงานไปยัง Emacs โดยระบบปฏิบัติการ คุณสามารถปิดการใช้งานการแจ้งเตือนไฟล์โดยกำหนดตัวแปร auto-revert-use-alert เป็นค่าศูนย์จากนั้น Emacs จะตรวจสอบการเปลี่ยนแปลงไฟล์โดยการสำรวจทุกห้าวินาที คุณสามารถเปลี่ยนช่วงเวลาการสำรวจผ่านตัวแปรช่วงเวลาย้อนกลับอัตโนมัติ

หลังจากที่ฉันตั้งค่า(auto-revert-use-notify nil)แล้ว Emacs ได้รีเฟรชบัฟเฟอร์ทั้งหมดทุก ๆ 5 วินาที

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