Làm cho vimdiff hiển thị các dòng khác nhau dưới dạng các dòng khác nhau (không khác nhau một phần)


8

vimdiff có thói quen khó chịu khi hiển thị hai dòng gần như hoàn toàn khác nhau là cùng một dòng khác nhau chỉ vì chúng có chung một ký tự ở đầu hoặc cuối.

Ví dụ:

foo.txtchứa : The quick brown fox jumps over the lazy dog. bar.txtchứa : This is a completely different line.

vimdiff foo.txt bar.txthiển thị hai dòng này cạnh nhau với mọi thứ trừ Thphần đầu được tô sáng.

Có cách nào để vô hiệu hóa hành vi này và chỉ hiển thị các dòng khác nhau như là các dòng khác nhau?


Thật khó chịu. Mặc dù tôi không quen với câu trả lời cho điều đó, nhưng điều tôi làm như một cách giải quyết là thêm một số dòng được kiểm soát ở nhiều nơi khác nhau ở cả hai bên, do đó :diffupdate, vimdiff"đồng bộ hóa" vị trí của hai tệp có khớp "neo" được thêm vào.
ysap

Câu trả lời:


1

Vâng, nó là có thể. Gõ lệnh

:hi! link DiffChange DiffText

1
Bạn cũng có thể làm :hi! link DiffChange DiffText. Nhưng không phải giải pháp này chỉ vượt qua vấn đề?
Ingo Karkat

@Ingo Karkat: Rất vui, tôi chỉ thử :hi linkbản in đó E414, không phải :hi! link. Đây là tất cả về những thay đổi highlihghting giữa hai tập tin. Thực tế là, đối với vim, phần cần làm nổi bật với màu mong muốn là một dòng và không phải là một phần của dòng, không liên quan đến người dùng.
dùng2987828

Tôi đã giải thích vấn đề theo cách cần có một ngưỡng cho "sự tương tự", để các dòng phân biệt 99% không nên được đánh dấu là đã thay đổi, nhưng vẫn có 10% khác nhau. Đây là những gì giải pháp đề xuất của bạn không đạt được (và thực sự sẽ yêu cầu thay đổi mã nguồn).
Ingo Karkat

@Ingo Karkat: Câu hỏi hiện tại nêu rõ just display different lines as being different lines?. Tôi đã không kiểm tra phiên bản câu hỏi mà bạn đã trả lời mặc dù. Tôi sẽ cá nhân như nghịch đảo, dí dỏm, với một cái gì đó giống như diffc làm: highligh thêm một nhân vật bị đè nén . Và cho rằng tôi cũng cần phải vá vim.
dùng2987828

0

Không, đây là một phần của thuật toán nội bộ của Vim để phân chia các thay đổi dòng được báo cáo bởi công cụ tìm khác biệt bên ngoài.

Sẽ thật tốt nếu điều này có thể bị ảnh hưởng thông qua một tùy chọn, nhưng hiện tại không có gì. Bạn sẽ phải sửa đổi mã nguồn của Vim và biên dịch phiên bản đặc biệt của riêng bạn. Làm thế nào về việc viết một bản vá và gửi nó vào danh sách gửi thư vim_dev ?!


1
"Không" và "phải sửa đổi mã nguồn của Vim" là sai. Xem câu trả lời của tôi.
dùng2987828

0

Tôi nghĩ rằng nó phụ thuộc vào đầu ra lệnh "diff".

Nếu bạn chạy ": help diff-Tùy chọn", bạn có thể thấy một ví dụ về định dạng khác mà Vim mong đợi:

    1a2
    > bbb
    4d4
    < 111
    7c7
    < GGG
    ---
    > ggg

The "1a2" item appends the line "bbb".
The "4d4" item deletes the line "111".
The '7c7" item replaces the line "GGG" with "ggg".

Đối với các thay thế (ví dụ 7c7), tôi nghĩ rằng vimdiff sẽ đặt chúng cạnh nhau và tô màu nó hl-DiffChange (ví dụ: màu tím trong cài đặt mặc định của tôi), sau đó tô sáng văn bản khác trong dòng bằng hl-DiffText (ví dụ: màu đỏ trong cài đặt mặc định của tôi).

Ví dụ: nếu tôi vimdiff hai tệp này:

Tệp 1:

This is common1
This is common2
11111111111111122222222222222222222222222222222222222
This is common4
This is common5

Tệp 2:

This is common1
This is common2
This is a completely different line
This is common4
This is common5

Mặc dù dòng thứ 3 của hai tệp hoàn toàn khác nhau, vimdiff vẫn đặt chúng cạnh nhau.

Một giải pháp hacky có thể đang sử dụng một chương trình tìm khác biệt bên ngoài tạo ra định dạng bạn muốn.

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.