Pindah ke baris berikutnya yang tidak cocok dengan vimdiff

8

Apakah ada cara untuk pindah ke baris tak tertandingi berikutnya dengan di vimdiff? Bukan "pindah ke baris yang diubah berikutnya", tetapi pindah ke baris berikutnya yang tidak cocok untuk file saat ini.

Dalam kasus saya, saya mencoba membandingkan dua file besar, yang salah satu di antaranya praktis merupakan subset dari yang lain. Yang ingin saya lakukan adalah melihat apakah ada baris di file yang lebih kecil yang hilang di file yang lebih besar. Saya pikir saya harus dapat menempatkan kursor saya di file yang lebih besar, dan kemudian langsung melompat ke anotasi baris "hilang" berikutnya.


Kebetulan bahwa file saat ini diurutkan, jadi saya mungkin dapat menggunakan utilitas baris perintah "comm" untuk menemukan baris yang hilang, tetapi saya bertanya-tanya apakah ada cara mudah untuk melakukannya di vimdiff, terutama jika baris tersebut tidak diurutkan.

RM
sumber
Apa sebenarnya garis yang tidak cocok? Baris, yang ditambahkan pada buffer lain?
Christian Brabandt
@ChristianBrabandt Ya. Baris yang ada di satu file (buffer) yang tidak ada di file lain (buffer).
RM
dan Anda ingin pindah ke baris yang ditambahkan di buffer lain? (Anda tidak dapat bergerak di atas garis pengisi yang dihapus)
Christian Brabandt

Jawaban:

2

Jika saya mengerti benar apa yang Anda inginkan dan Anda ingin menemukan garis-garis itu, yang unik di satu buffer dan karena itu ditandai sebagai "DiffAdd" di buffer lain.

Sayangnya, tidak ada cara asli untuk melakukannya menggunakan search()fungsi, oleh karena itu Anda harus mengatasinya dengan fungsi berikut, yang berfungsi dengan mencari garis, yang memiliki sorotan "DiffAdd".

function! NextChange()
    while search('^.*', 'w') > 0
        if synIDattr(diff_hlID(line('.'),col('.')), 'name') is# 'DiffAdd'
            break
        endif
    endwhile
endfunction
com! NextChange :call NextChange()
Christian Brabandt
sumber
Apakah ini berfungsi untuk pemindahan dan perubahan juga?
Tom Hale
Anda mungkin perlu mencari sorotan 'DiffChange' juga
Christian Brabandt