Di chuyển đến dòng chưa từng có với vimdiff


8

Có cách nào để di chuyển đến dòng chưa từng có trong vimdiff không? Không phải "di chuyển đến dòng thay đổi tiếp theo", mà di chuyển đến dòng chưa từng có tiếp theo cho tệp hiện tại.

Trong trường hợp của tôi, tôi đang cố gắng so sánh hai tệp lớn, một trong số đó thực tế là một tập hợp con khác. Những gì tôi muốn làm là để xem nếu có bất kỳ dòng nào trong tệp nhỏ hơn bị thiếu trong tệp lớn hơn. Tôi hình dung tôi sẽ có thể đặt con trỏ của mình vào tệp lớn hơn và sau đó trực tiếp chuyển sang chú thích dòng "thiếu" tiếp theo.


Nó chỉ xảy ra khi các tệp hiện tại trong câu hỏi được sắp xếp, vì vậy tôi có thể sử dụng tiện ích dòng lệnh "comm" để tìm các dòng bị thiếu, nhưng tôi tự hỏi liệu có cách nào dễ dàng để làm điều đó trong vimdiff, đặc biệt là nếu các dòng không được sắp xếp.


Chính xác những gì là dòng chưa từng có? Các dòng, được thêm vào bộ đệm khác?
Christian Brabandt

@ChristianBrabandt Có. Các dòng nằm trong một tệp (bộ đệm) không nằm trong tệp khác (bộ đệm).
RM

và bạn muốn di chuyển đến các dòng được thêm vào trong bộ đệm khác? (bạn không thể di chuyển lên trên các dòng filler đã xóa)
Christian Brabandt

Câu trả lời:


2

Nếu tôi hiểu chính xác những gì bạn muốn và bạn muốn tìm những dòng đó, đó là duy nhất trong một bộ đệm và do đó được đánh dấu là "DiffAdd" trong bộ đệm khác.

Thật không may, không có cách riêng để thực hiện bằng cách sử dụng search()hàm, do đó bạn phải làm việc xung quanh nó với chức năng sau, hoạt động bằng cách tìm kiếm một dòng, có tô sáng "DiffAdd".

function! NextChange()
    while search('^.*', 'w') > 0
        if synIDattr(diff_hlID(line('.'),col('.')), 'name') is# 'DiffAdd'
            break
        endif
    endwhile
endfunction
com! NextChange :call NextChange()

Điều này cũng làm việc để loại bỏ và thay đổi?
Tom Hale

Bạn cũng có thể cần tìm kiếm phần nổi bật 'DiffChange'
Christian Brabandt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.