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.


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.


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


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.