Membandingkan dua file di Vim

63

Apakah mungkin untuk melihat dua file berdampingan di Vim? Jika demikian, bagaimana saya bisa mengatur editor saya untuk melakukan ini, dan apakah ada cara untuk diffantara dua file dalam Vim?

Saya tahu :nextdan :prevperintah, tapi ini bukan apa yang saya cari. Akan sangat bagus untuk melihat dua file secara bersamaan.

Zaid
sumber

Jawaban:

43

Buka tampilan berdampingan:

Ctrl+w v

Ubah di antara mereka:

Ctrl+w h or l

Periksa perintah vimdiff , bagian dari paket vim, jika Anda menginginkan tampilan seperti-diff:

vimdiff file1.txt file2.txt
maxschlepzig
sumber
2
Apakah ada cara untuk mengunci pengguliran di antara dua jendela?
Zaid
1
Ya, lihat vimdoc.sourceforge.net/htmldoc/options.html#%27scrollbind%27 - dengan vimdiff itu adalah default.
maxschlepzig
1
Saya biasanya menggunakan "diff file1 file2" pada baris perintah.
djangofan
2
@Zaid Use vimdiff file1.txt file2.txt(lihat di bawah)
Eduardo Cuomo
42

Anda juga dapat membuka vim dalam mode layar terbagi, dengan -Oopsi: -

vim -O file1 [file2 ...]

Untuk kemudian mengaktifkan mode diff, Anda perlu menjalankan :diffthisperintah di setiap panel.

Skenario kasus penggunaan lain, adalah jika Anda sudah punya satu file terbuka di vim, dan Anda ingin membuka dan membandingkannya dengan yang lain. Kemudian Anda dapat menggunakan perintah vim berikut: -

: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)

Anda kemudian dapat mematikan mode diff di setiap panel dengan perintah vim :diffoff.

EDIT
Dan standar lainnya yang belum disebutkan: -

vim -d file1 [file2 ...]

Ini sama dengan menelepon vimdiffsecara langsung.

Alex Leach
sumber
11
:windo :diffthisdapat digunakan sebagai pengganti tiga perintah terakhir.
Bernhard
2

Atau cukup buka file pertama di VIM, lalu :vert diffsplit file2 :vertbuat layar terbelah secara vertikal.

diffsplit tidak diff, dan membagi file dan gulir menguncinya.

Dustin
sumber