So sánh chi tiết hơn trong một dòng


17

Tôi sử dụng vimdiffđể kiểm tra sự khác biệt giữa các tập tin và đôi khi nó bị mất một chút. ví dụ: nếu tôi có hai tệp sau:

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

và:

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

hiển thị chúng trong vimdiffcho:

nhập mô tả hình ảnh ở đây

Những gì tôi sẽ muốn thấy là trong bc hkhông được viết hoa.

Có cách nào để nói với vimdiff để so sánh (trong dòng đó) chỉ là một phần của nó (ý tôi là, bỏ qua int i =+ 3)?


4
Các plugin diffchar có lẽ là những gì bạn cần nhưng tôi không có kinh nghiệm với nó. Có lẽ ai đó có kinh nghiệm sử dụng nó có thể đưa ra một câu trả lời tốt, chi tiết (hoặc có thể thay thế).
tokoyami 6/2/2015

Câu trả lời:


15

Tôi không nghĩ rằng điều này có thể được thực hiện bởi chính Vim. Từ :h view-diffs(nhấn mạnh của tôi):

hl-DiffText DiffText Thay đổi văn bản trong một dòng Thay đổi.  Vim
                                tìm thấy nhân vật đầu tiên khác
                                và nhân vật cuối cùng khác
                                (tìm kiếm từ cuối dòng).   Các
                                văn bản ở giữa được tô sáng.  Điều này có nghĩa là
                                những phần ở giữa vẫn là
                                cùng được làm nổi bật   Chỉ "iwhite" của
                                'diffopt' được sử dụng ở đây.

Đề nghị của Tokoyami đưa chúng ta một bước gần hơn. Cài đặt diffchar( liên kết Github cho những người sử dụng trình tải tự động plugin). Kể từ v4.7, với plugin được kích hoạt, Vim sẽ tự động hiển thị các khác biệt chính xác hơn:

nhập mô tả hình ảnh ở đây

  • Bạn có thể nhấn F7(sơ đồ phím mặc định) để chuyển đổi giữa plugin thông thường và plugin. Tái chỉ định với:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    thay thế <key>bằng một mã khóa thích hợp.

  • Bạn có thể sử dụng nhiều màu sắc hơn:

    let g:DiffColors=100
    

+1 nhưng "một bước gần hơn" có vẻ quá bảo thủ đối với tôi. Diffchar hoàn toàn giải quyết vấn đề này IMO.
Sparhawk

@Sparhawk tốt, nó không bỏ qua các yếu tố phổ biến trong một dòng (OP chỉ muốn các thay đổi được tô sáng)
muru

Tôi không chắc là tôi hiểu. Không phải các yếu tố phổ biến bị bỏ qua trong ví dụ này (ví dụ printfello)?
Sparhawk

1
@Sparhawk trong ví dụ này, vâng. Nhưng với những thay đổi phức tạp hơn, nó nhanh chóng trở nên lộn xộn.
muru

À không sao, vậy thì hơi lỗi rồi, cảm ơn vì thông tin.
Sparhawk
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.