2012-01-14 11 views
11

में विशेष शब्दों वाले लाइनों को अनदेखा करें मेरे पास vimdiff लेने के लिए 2 बड़ी फ़ाइलें हैं। विमडिफ आउटपुट में मैं अलग दिखने वाली रेखाओं को अनदेखा करना चाहता हूं लेकिन एक विशेष शब्द है।विमडिफ आउटपुट

उदा। मेरे मामले में मैं अपनी फाइलों में उपसर्ग WARNING: के साथ सभी लाइनों के अंतर को अनदेखा करना चाहता हूं।

धन्यवाद,

उत्तर

0

आप vimdiff लागू पहले फ़ाइलों क्यों फिल्टर नहीं?

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 

यह उल्लेखनीय है कि है:

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

यह प्रत्यक्ष संपादन की अनुमति नहीं देता है। सामान्य उद्देश्य अनदेखा लाइनों को छोड़कर, फ़ाइल 2 को सीधे स्थान पर संपादित करना होगा। – ralfoide

6

इस लक्ष्य को हासिल करने के लिए आपको अपने .vimrc के लिए निम्न (vim भीतर :h diffexpr चलाकर पाया उदाहरण से एक सरल दिमाग संशोधन) जोड़ सकते हैं -I (या --ignore-matching-lines=) द्वारा प्रदान की गई कार्यक्षमता diff के लिए स्विच केवल किसी भी बदली हुई रेखाओं को अनदेखा कर देगा जहां दोनों (या सभी) फ़ाइलों में रेखा इस अभिव्यक्ति से मेल खाती है।

इस बारे में अधिक जानकारी के लिए vim भीतर --ignore-matching-lines=RE स्विच पर अधिक जानकारी के लिए man diff और :h diffexpr देखें।

संपादित करें: उपयोग करने के लिए कौन सा पैटर्न नियंत्रित करने के लिए वैकल्पिक चर g:diffignore जोड़ा गया है। परिभाषा पर प्रतिस्थापन बल देने के लिए function! का भी उपयोग किया गया।

+0

मैं उम्मीद कर रहा था कि किसी और के पास यह विचार था। मुझे अपने .vimrc खुद को हैक करने की जरूरत है बचाने के लिए धन्यवाद। मैं इसे कभी-कभी साझा करता हूं, इसलिए मैंने आपको देय क्रेडिट दिया है। ;-) –

+0

संपादन के लिए धन्यवाद @ ग्रेग – sanmiguel

+0

रिश्तेदार वीआईएम नौसिखिया की मदद के लिए, मैं 'g: diffignore' कैसे सेट करूं? 'जी' उपसर्ग क्या है? – drevicko

संबंधित मुद्दे