Saya menggunakan vim sebagai editor utama saya.
Saya juga ingin menggunakan vim untuk diff file dan memodifikasi file sambil melakukan diff untuk memperbaiki perubahan yang mudah (daripada kebanyakan teknik diff yang merupakan siklus dari diff / fix / diff / fix).
Selain itu ada cara mudah untuk mengintegrasikan vim ke dalam alat yang berbeda yang digunakan oleh alat / situs kontrol sumber (saya secara khusus memikirkan git tapi saya yakin orang lain akan tertarik untuk berintegrasi dengan alat / situs kontrol sumber lainnya).
:Gdiff
dan:Gvdiff
kedua perintah memungkinkan Anda melihat perbedaan berdampingan dari buffer saat ini jika buffer Anda saat ini dikelola oleh git. Hal ini juga membuat Anda menyelesaikan konflik dalam tata letak tiga jendela saat Anda menggabungkan konflik pada beberapa filevd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }
dan saya memohonnya denganvd file1 file2
. Ini digunakandiff
untuk menentukan apakah file berbeda dan hanya terbukavimdiff
jika demikian. Kalau tidak, saya tinggal di shell. Saya juga menonaktifkan penyorotan sintaks di Vim karena saya merasa mengganggu ketika berbeda. Hanya berfungsi dengan dua file.Jawaban:
vim memiliki fungsi ini bawaan (dengan flag baris perintah yang benar).
Ini membuka setiap file dalam tampilan dan menyoroti perbedaan.
Kode apa pun yang identik sedang
folded
tidak ada sehingga Anda tidak perlu melihat kode yang sama atau menggulir potongan besar kode yang identik.Tetapi ada juga aplikasi pembungkus
vimdiff
yang memanggil vim dengan benar dengan flag yang benar.Jika Anda menggunakan git, Anda dapat mengatur alat diff eksternal. Jadi mudah untuk mengatur vimdiff menjadi alat diff untuk git.
Saat menggunakan vimdiff, Anda dapat mengedit sisi mana saja dan sorotan berbeda terus menunjukkan perbedaan.
Catatan: Saat mengedit dari git diff. Jika Anda mencoba dan mengedit versi repositori yang disimpan dari file, perubahan Anda akan dibuang ketika Anda keluar (git tidak mempercayai Anda dengan aslinya sehingga Anda berbeda dengan salinan tmp) tetapi Anda dapat mengedit salinan lokal ke isi hati Anda dan simpan di atas Anda versi saat ini.
Beberapa perintah dasar yang berguna di
vimdiff
Pengaturan vim lain yang saya gunakan untuk bekerja dengan highliting dengan vimdiff
Ini mematikan penyorotan pada bit kode yang diubah. Jadi baris yang diubah disorot sehingga saya bisa melihat perubahan, tetapi teks sebenarnya yang telah berubah menonjol pada baris (karena tidak disorot).
sumber
:diffthis
perintah untuk memulai diff ketika Vim sudah berjalan.git config --global diff.tool vimdiff
,git diff
masih menunjukkan segalanya seperti jika saya tidak mengubah apa pun.git difftool
Jika Anda mengedit file yang terbuka dan ingin membandingkannya dengan file lain tanpa menutup yang sekarang:
Buka file baru di layar terbagi:
Untuk pemisahan vertikal:
atau split horizontal:
Alihkan kursor ke berbagai layar terbagi:
Aktifkan "mode diff" dalam file:
Beralih ke file lain dan aktifkan "mode diff":
Untuk mematikan "mode diff":
sumber
:windo diffthis
terlaluAnda dapat menempatkan pengaturan di bawah ini dalam
.gitconfig
file yang ditemukan di%homepath%
(atau%userprofile%
) direktori pengguna yang saat ini login:Ini akan memungkinkan alat git bash untuk mulai menggunakan vimdiff sebagai alat diff eksternal juga.
sumber
Berikut ini adalah konfigurasi git saya:
https://github.com/tracyone/dotfiles/blob/master/.gitconfig
sumber
Saya hanya dapat melihat tiga situasi untuk menggunakan vim sebagai difftool. Mereka dijelaskan secara singkat di bawah ini:
Untuk git difftool, letakkan yang berikut di Anda
~/.gitconfig
:Untuk membuka vim sebagai alat bantu untuk dua file, Anda dapat melakukan hal berikut:
Untuk mendapatkan tampilan berbeda untuk buffer yang saat ini aktif, yaitu semua buffer yang memiliki jendela yang ditetapkan untuk mereka di halaman aktif saat ini, Anda dapat melakukan hal berikut:
Untuk informasi lebih lanjut, lihat
:h diff
sumber
inilah yang saya lakukan:
:vnew
(untuk memiliki kedua jendela berdampingan) atau:new
(untuk memiliki windows atas dan bawah). jika Anda memiliki file tertentu untuk dibuka di jendela kedua, Anda dapat memasukkan path seperti ini::vnew /path/to/secondfile.txt
inilah fungsi khusus yang ada di saya
~/.vimrc
:sumber
:diffthis
dan olehdiffoff!
karena itu Anda tidak perlu mengatur sendiri semua opsi berbeda (mis. cursorbind juga diatur oleh diffmode)