Diff dua tab di Vim

121

Skenario: Saya telah membuka Vim dan menempelkan beberapa teks. Saya membuka tab kedua dengan :tabedan menempelkan beberapa teks lain di sana.

Sasaran: Saya ingin tab ketiga dengan output yang setara dengan menulis kedua teks ke file dan membukanya vimdiff.

Yang paling dekat yang bisa saya temukan adalah "membeda-bedakan buffer saat ini terhadap file", tetapi tidak menggunakan diffdua buffer yang terbuka tetapi belum disimpan.

davetapley.dll
sumber
1
apa perintah tabe?
hhafez
1
@hhafez - buka buffer baru di tab baru
Benteng
3
Ini kependekan dari: tabedit, alias: tabnew.
TSomKes

Jawaban:

188

Saya sarankan untuk membuka file kedua di tab yang sama daripada yang baru.

Inilah yang biasanya saya lakukan:

:edit file1
:diffthis
:vnew
:edit file2
:diffthis

The :vnewperintah membagi tampilan saat vertikal sehingga Anda dapat membuka file kedua ada. Perintah :diffthis(atau singkat :difft:) kemudian diterapkan ke setiap tampilan.

Jan
sumber
1
Fwiw, MacVim tampaknya tidak memiliki ini secara default, tetapi saya pikir Anda harus bisa pergi ke terminal dan mengetik vimdiff file1.txt file2.txtdan menjatuhkan diri Anda sendiri.
ruffin
11
Anda baru saja mengejutkan saya. Hidupku tidak akan pernah sama lagi :diffthis. Terima kasih banyak. Terima kasih!
Justin Force
3
Ini luar biasa. Bagian- edit fileNbagian tersebut dapat diganti hanya dengan menempelkan dari buffer, yang memungkinkan Anda membedakan dua potongan teks tanpa menempel masing-masing ke dalam file tmp (sesuatu yang memungkinkan Anda melakukannya, tetapi alat visual diff pada Mac kurang). Ini bekerja di MacVim untuk saya di luar kotak.
yshavit
38

Saya sarankan mencoba : diffthis atau : diffsplit

joeslice
sumber
10
:vert diffsplitmembuat tampilan berbeda lebih tradisional daripada tanpa:vert
ephemient
7
Anda dapat: menyetel diffopt + = vertical untuk menjadikan: vert sebagai default.
graywh
3
Juga, untuk menggulir dua jendela secara bersamaan: :set scrollbinddi keduanya.
Dmytro Sirenko
Tidak berfungsi jika saya harus tab, seperti yang ditanyakan dalam pertanyaan. Jika saya melakukannya, :diffsplitsaya mendapatkan dua buffer yang terhubung.
erik
25

Saat Anda memiliki dua file yang dibuka dalam pemisahan vertikal, jalankan

:windo diffthis

AB
sumber
8
gunakan :diffoffuntuk mematikan mode diff
AB
2
Tetapi bagaimana cara mengubah dari dua tab menjadi pemisahan vertikal?
erik
1

Konten dari semua tab ada di dalam buffer. Lihat buffernya:

:buffers

Temukan nomor yang tepat untuk konten yang harus berbeda dengan konten tab Anda saat ini.

Buka buffer di dalam tab Anda saat ini (fe buffer number 4)

:sb 4

Atau lakukan untuk tampilan vertikal:

:vertical sb 4

Kemudian Anda dapat mengubah isinya dengan sederhana

:windo diffthis

Jika Anda telah menyelesaikan analisis diff, Anda dapat memasukkan:

:windo diffoff
jepret
sumber