การเปรียบเทียบสองไฟล์ใน Vim


63

เป็นไปได้หรือไม่ที่จะดูไฟล์สองไฟล์เทียบกันใน Vim? ถ้าเป็นเช่นนั้นฉันจะตั้งค่าตัวแก้ไขให้ทำเช่นนี้ได้อย่างไรและมีวิธีการdiffระหว่างสองไฟล์ภายใน Vim หรือไม่?

ฉันตระหนักถึง:nextและ:prevคำสั่ง แต่นี่ไม่ใช่สิ่งที่ฉันตามมา มันจะเป็นการดีที่ได้ดูทั้งสองไฟล์ควบคู่

คำตอบ:


43

เปิดมุมมองเคียงข้างกัน:

Ctrl+w v

เปลี่ยนระหว่างพวกเขา:

Ctrl+w h or l

ชำระเงินคำสั่งvimdiffซึ่งเป็นส่วนหนึ่งของแพ็กเกจ vim หากคุณต้องการมุมมอง diff-like:

vimdiff file1.txt file2.txt

2
มีวิธีล็อคการเลื่อนระหว่างหน้าต่างทั้งสองหรือไม่?
Zaid

1
ใช่ลองดูvimdoc.sourceforge.net/htmldoc/options.html#%27scrollbind%27 - ด้วย vimdiff มันเป็นค่าเริ่มต้น
maxschlepzig

1
ฉันมักจะใช้ "diff file1 file2" ในบรรทัดคำสั่ง
djangofan

2
@Zaid Use vimdiff file1.txt file2.txt(ดูด้านล่าง)
Eduardo Cuomo

42

นอกจากนี้คุณยังสามารถเปิดเป็นกลุ่มในโหมดแยกหน้าจอด้วย-Oตัวเลือก: -

vim -O file1 [file2 ...]

ในการเปิดโหมด diff คุณต้องเรียกใช้:diffthisคำสั่งในแต่ละบานหน้าต่าง

สถานการณ์การใช้งานกรณีอื่นคือถ้าคุณมีไฟล์หนึ่งไฟล์เปิดเป็นกลุ่มแล้วและคุณต้องการเปิดและเปรียบเทียบกับไฟล์อื่น จากนั้นคุณสามารถใช้คำสั่ง vim ต่อไปนี้: -

:vs otherfile (open otherfile in vertical split screen)
:diffthis (turn on diff mode in original file)
Ctrl+w l  (swap to newly opened file)
:diffthis (turn on diff mode in opened file)

:diffoffจากนั้นคุณสามารถปิดโหมดต่างกันในแต่ละบานหน้าต่างด้วยคำสั่งเสียงเรียกเข้า

แก้ไข
และมาตรฐานอื่นที่ไม่ได้กล่าวถึง: -

vim -d file1 [file2 ...]

นี่เทียบเท่ากับการโทรvimdiffโดยตรง


11
:windo :diffthisสามารถใช้แทนสามคำสั่งล่าสุด
แบร์นฮาร์ด

2

หรือเพียงแค่เปิดไฟล์แรกใน VIM จากนั้น:vert diffsplit file2 :vertทำให้แยกหน้าจอในแนวตั้ง

diffsplit แตกต่างกันและแยกไฟล์และเลื่อนล็อคพวกเขา

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