ฉันจะบันทึกการเปลี่ยนแปลงในบัฟเฟอร์ vim ของฉันเป็นไฟล์แพตช์ได้อย่างไร


20

มีวิธีบันทึกการเปลี่ยนแปลงที่ฉันทำกับ vim buffer ของฉันเป็นไฟล์แพทช์สำหรับไฟล์ต้นฉบับโดยไม่บันทึกเป็นไฟล์แยกต่างหากและใช้ diff หรือไม่?


2
มีไซต์ SE เบต้าใหม่สำหรับVi และ Vimคุณอาจต้องการลองดู
Roflo

คำตอบ:


20

เป็นไปได้ที่จะทำสิ่งนี้โดยไม่ใช้ปลั๊กอินโดยใช้wคำสั่งดังนั้นเนื้อหาบัฟเฟอร์สามารถใช้ในคำสั่งเชลล์:

:w !diff -au "%" - > changes.patch

( %ถูกแทนที่ด้วยเส้นทางของไฟล์ที่ถูกแก้ไขให้-อ่านบัฟเฟอร์จาก stdin)


2
คุณสามารถใช้งานได้diff -u "%" -เนื่องจากdiffเข้าใจเส้นประเป็นความหมายที่อ่านจาก stdin
roaima

1

คุณสามารถกรองบัฟเฟอร์ผ่านการdiffใช้%!ไวยากรณ์:

:%! diff -au "%" -

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

:%! patch -o - "%"

ที่แปลง diff ของคุณกลับไปเป็นไฟล์ที่ถูกดัดแปลง

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