vim มีฟังก์ชันนี้ในตัว (พร้อมกับการตั้งค่าสถานะบรรทัดคำสั่งที่ถูกต้อง)
vim -d <file1> <file2>
สิ่งนี้จะเปิดแต่ละไฟล์ในมุมมองและเน้นความแตกต่าง
รหัสใด ๆ ที่เหมือนกันจะไม่folded
อยู่ดังนั้นคุณไม่จำเป็นต้องดูโค้ดที่เหมือนกันหรือเลื่อนดูโค้ดขนาดใหญ่ของโค้ดที่เหมือนกัน
แต่ยังมีแอปพลิเคชัน wrapper vimdiff
ที่เรียกใช้ vim ได้อย่างถูกต้องด้วยการตั้งค่าสถานะที่ถูกต้อง
vimdiff source1.cpp source2.cpp
หากคุณใช้คอมไพล์คุณสามารถตั้งค่าเครื่องมือดิฟภายนอกได้ ดังนั้นจึงง่ายที่จะตั้ง vimdiff ให้เป็นเครื่องมือ diff สำหรับคอมไพล์
git config --global diff.tool vimdiff
เมื่อใช้ vimdiff คุณสามารถแก้ไขด้านใดด้านหนึ่งและการเน้นที่แตกต่างกันตามจังหวะเพื่อแสดงความแตกต่าง
หมายเหตุ: เมื่อแก้ไขจากคอมไพล์ต่าง หากคุณลองและแก้ไขไฟล์เก็บข้อมูลเวอร์ชันที่เก็บไว้การเปลี่ยนแปลงของคุณจะถูกยกเลิกเมื่อคุณออก (git ไม่ไว้ใจคุณกับต้นฉบับดังนั้นคุณจึงแตกต่างกับสำเนา tmp) แต่คุณสามารถแก้ไขสำเนาโลคัลไปยังเนื้อหาใจและ บันทึกไว้เหนือรุ่นปัจจุบันของคุณ
คำสั่งพื้นฐานบางคำที่มีประโยชน์ vimdiff
dp diffput: puts changes under the cursor into the other file
making them identical (thus removing the diff).
do diffget: (o => obtain). The change under the cursor is replaced
by the content of the other file making them identical.
]c Jump to the next diff
[c Jump to the previous diff
การตั้งค่า vim อื่น ๆ ที่ฉันใช้เพื่อทำงานกับ highliting กับ vimdiff
if &diff
highlight! link DiffText MatchParen
endif
สิ่งนี้จะปิดการเน้นที่บิตของรหัสที่มีการเปลี่ยนแปลง ดังนั้นบรรทัดที่มีการเปลี่ยนแปลงจะถูกเน้นเพื่อให้ฉันสามารถมองเห็นการเปลี่ยนแปลง แต่ข้อความจริงที่มีการเปลี่ยนแปลงโดดเด่นในบรรทัด (เพราะมันไม่ได้เน้น)
:Gdiff
และ:Gvdiff
ทั้งสองคำสั่งให้คุณเห็นความแตกต่างของบัฟเฟอร์ปัจจุบันหากบัฟเฟอร์ปัจจุบันของคุณถูกจัดการโดย git นอกจากนี้ยัง heps คุณในการแก้ไขความขัดแย้งในรูปแบบหน้าต่างสามเมื่อคุณมีการผสานความขัดแย้งในบางไฟล์