Perbandingan lebih rinci dalam satu baris

17

Saya gunakan vimdiffuntuk memeriksa perbedaan antara file, dan beberapa kali melewatkan sedikit. misalnya, jika saya memiliki dua file berikut:

//a.c
printf("Hello\n");

dan:

//b.c
int i = printf("hello\n") + 3;

menunjukkannya pada vimdiffmemberi:

masukkan deskripsi gambar di sini

Yang ingin saya lihat adalah bahwa dalam bc htidak dikapitalisasi.

Apakah ada cara untuk memberitahu vimdiff untuk membandingkan (di baris itu) hanya sebagian saja (maksud saya, abaikan int i =dan + 3)?

elyashiv
sumber
4
The diffchar Plugin mungkin apa yang Anda perlu tapi saya memiliki pengalaman nol dengan itu. Mungkin seseorang dengan pengalaman menggunakannya dapat memberikan jawaban yang baik dan terperinci (atau mungkin alternatif).
tokoyami

Jawaban:

15

Saya tidak berpikir ini bisa dilakukan oleh Vim sendiri. Dari :h view-diffs(beri penekanan pada saya):

hl-DiffText DiffText Mengubah teks di dalam baris yang Diubah.  Vim
                                menemukan karakter pertama yang berbeda,
                                dan karakter terakhir yang berbeda
                                (mencari dari akhir baris).   Itu
                                teks di antara disorot.  Ini berarti
                                bagian di tengah yang masih
                                sama disorot pula.   Hanya "iwhite" dari
                                'difopt' digunakan di sini.

Saran Tokoyami membawa kita selangkah lebih dekat. Instal diffchar( tautan Github untuk mereka yang menggunakan autoloader plugin). Sejak v4.7, dengan plugin diaktifkan, Vim secara otomatis menunjukkan perbedaan yang lebih tepat:

masukkan deskripsi gambar di sini

  • Anda dapat menekan F7(keymap default) untuk beralih antara yang biasa dan plugin. Tugaskan kembali dengan:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    mengganti <key>dengan kode kunci yang sesuai.

  • Anda dapat menggunakan lebih banyak warna:

    let g:DiffColors=100
    
muru
sumber
+1 tetapi "selangkah lebih dekat" tampaknya terlalu konservatif bagi saya. Diffchar benar-benar menyelesaikan masalah IMO ini.
Sparhawk
@Sparhawk, tidak mengabaikan elemen umum dalam satu baris (OP ingin hanya perubahan yang disorot)
muru
Saya tidak yakin saya mengerti. Bukankah unsur-unsur umum diabaikan dalam contoh ini (misalnya printfdan ello)?
Sparhawk
1
@Sparhawk dalam contoh ini, ya. Tetapi dengan perubahan yang lebih kompleks, dengan cepat menjadi berantakan.
muru
Ah oke, jadi agak sedikit buggy kalau begitu ... terima kasih atas informasinya.
Sparhawk