2012-01-14 25 views
11

Tôi có 2 tệp lớn để dùng vimdiff. Trong đầu ra vimdiff tôi muốn bỏ qua các dòng hiển thị khác biệt nhưng có một từ cụ thể.bỏ qua các dòng có các từ cụ thể trong đầu ra vimdiff

ví dụ: trong trường hợp của tôi, tôi muốn bỏ qua sự khác biệt của tất cả các dòng với tiền tố WARNING: trong các tệp của tôi.

Cảm ơn,

Trả lời

0

Tại sao bạn không lọc tệp trước khi gọi vimdiff?

grep -v "^WARNING" file1 > file1_w; 
grep -v "^WARNING" file2 > file2_w; 
vimdiff file1_w file2_w 
+1

Điều này không cho phép chỉnh sửa trực tiếp. Nói chung, mục đích sẽ là chỉnh sửa trực tiếp tệp 2, ngoại trừ các dòng bị bỏ qua. – ralfoide

6

Để đạt được điều này, bạn có thể thêm dòng sau vào vimrc của bạn (một biến thể đầu óc đơn giản từ ví dụ tìm thấy bằng cách chạy :h diffexpr trong vim):

set diffexpr=MyDiff() 
function! MyDiff() 
    let opt = "" 
    if exists("g:diffignore") && g:diffignore != "" 
     let opt = "-I " . g:diffignore . " " 
    endif 
    if &diffopt =~ "icase" 
     let opt = opt . "-i " 
    endif 
    if &diffopt =~ "iwhite" 
     let opt = opt . "-b " 
    endif 
    silent execute "!diff -a --binary " . opt . v:fname_in . " " . 
     \ v:fname_new . " > " . v:fname_out 
endfunction 

Đó là cần lưu ý rằng các chức năng được cung cấp bởi công tắc -I (hoặc --ignore-matching-lines=) cho diff CHỈ sẽ bỏ qua bất kỳ dòng nào đã thay đổi trong đó dòng trong cả hai (hoặc tất cả) tệp khớp với biểu thức này.

Xem man diff để biết thêm chi tiết về công tắc --ignore-matching-lines=RE:h diffexpr trong vim để biết thêm chi tiết về điều này.

CHỈNH SỬA: Đã thêm biến tùy chọn g:diffignore để kiểm soát mẫu nào sẽ sử dụng. Cũng được sử dụng function! để buộc thay thế theo định nghĩa.

+0

Tôi đã hy vọng một người khác có ý tưởng này. Cảm ơn vì đã cứu tôi cần phải tự hack bản thân .vimrc của tôi. Tôi chia sẻ đôi khi, vì vậy tôi đã cho bạn tín dụng do. ;-) –

+0

Cảm ơn bạn đã chỉnh sửa @Greg – sanmiguel

+0

Để giúp người mới làm quen với VIM, tôi làm cách nào để đặt 'g: diffignore'? Tiền tố 'g' là gì? – drevicko

Các vấn đề liên quan