วิธีดูต่างกันเมื่อ emacs แนะนำให้กู้ไฟล์นี้


51

บางครั้งมันเกิดขึ้น: emacs แจ้งให้คุณทราบเกี่ยวกับการกู้คืนการเปลี่ยนแปลงที่ไม่ได้บันทึกไว้ในไฟล์ แต่คุณจำไม่ได้ว่าต้องการการเปลี่ยนแปลงเหล่านั้นหรือไม่

เริ่มต้นที่recover-this-fileบัฟเฟอร์มีวิธีดู diff หรือเห็นการเปลี่ยนแปลงโดยตรงหรือไม่?

ตัวอย่างเช่นสิ่งที่magit-modeให้เมื่อแท็บไฟล์ที่แก้ไขในบัฟเฟอร์สถานะ


คำตอบ:


51

หลังจากเรียกใช้recover-this-fileและยอมรับเวอร์ชันบันทึกอัตโนมัติคุณจะมีบัฟเฟอร์ที่แก้ไขซึ่งมีเนื้อหาบันทึกอัตโนมัติ ณ จุดนี้คุณสามารถใช้M-x diff-buffer-with-file RETเพื่อดูความแตกต่างระหว่างบัฟเฟอร์ที่แก้ไขและไฟล์ที่บันทึก

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

(defun my-diff-buffer-with-file ()
  "Compare the current modified buffer with the saved version."
  (interactive)
  (let ((diff-switches "-u")) ;; unified diff
    (diff-buffer-with-file (current-buffer))))

นอกจากนี้ยังมีสิ่งที่เทียบเท่า ediff (ซึ่งฉันชอบโดยทั่วไปแม้ว่าฉันจะใช้ทั้งสองอย่าง) ซึ่งมีให้ที่ M-x ediff-current-file RET

หากคุณต้องการปฏิเสธการแก้ไขหลังจากตรวจสอบ diff คุณควรจะสามารถundoกู้คืนได้อย่างง่ายดาย (ความล้มเหลวที่คุณสามารถใช้revert-bufferหรือfind-alternate-file.)

เนื่องจากการโยงคีย์สำหรับคำสั่ง diff มักจะเกี่ยวข้อง=ฉันค้นหาสิ่งที่สะดวกสบายต่อไปนี้ (หมายเหตุ: ฉันได้ยกเลิกการC-zเชื่อมโยงเริ่มต้นแล้วและย้ายมันไปC-z C-zที่ซึ่งเปิดขึ้นC-zเป็นคำนำหน้าสำหรับการผูกแบบกำหนดเอง):

(global-set-key (kbd "C-z =") 'my-diff-buffer-with-file)
(global-set-key (kbd "C-z C-=") 'ediff-current-file)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.