2010-03-11 4 views
9

में एकाधिक गिट diffs पक्ष को कैसे देख सकता हूं, मैं एक कमांड चलाने में सक्षम होना चाहता हूं जो विम में एक गिट diff खोलता है, प्रत्येक फ़ाइल के लिए diff सेट में एक टैब के साथ।मैं विम

तो उदाहरण के लिए मैंने अपने काम करने वाले पेड़ में foo.txt और bar.txt फ़ाइलों को बदल दिया है और मैंने कमांड को दो टैब के साथ खोलने के लिए देखेगा। पहले टैब में मेरे काम करने वाले पेड़ में foo.txt और रिपोजिटरी में foo.txt के बीच एक साइड-बाय-साइड डिफ होगा, और दूसरे टैब में bar.txt के लिए साइड-बाय-साइड डिफ होगा।

किसी को भी कोई विचार है?

उत्तर

7

तरह से मैं नई vim टैब में परिवर्तन के साथ ऐसा होता है (हालांकि यह एक भी आदेश नहीं है)

  1. फ़ाइलें खोलें:

    vim -p $ (Git diff --name -only)

  2. हर बफर के लिए vcscommand vim plugin

    के साथ अपने वर्तमान प्रधान के लिए diff मिलती है: VCSVimDiff

यह अंतर का अच्छा दृश्य देता है, हालांकि पैच रूप में नहीं।

किसी और चीज के लिए मैं git diff पर रहूंगा।

संपादित

तरह डेव नीचे लिखते हैं, 1 कदम और 2

vim -p $(git diff --name-only) -c "tabdo VCSVimDiff" 
+2

आप इसे संभवतः एक कमांड में जोड़ सकते हैं, जिसे शेल स्क्रिप्ट या फ़ंक्शन में रखा जा सकता है। (अवांछित कोड आगे): vim -p $ (गिट diff --name-only) -c "tabdo VCSVimDiff" –

+0

मैंने एक-लाइनर और 2 भाग दोनों आदेशों को आजमाया। यह केवल अंतिम टैब खोले जाने के लिए diff करता है। अन्य टैबों के पास होना चाहिए: VCSVimDiff ने उनसे कहा। समाधान? .. मुझे diff चलाने वाले सभी टैब प्राप्त करना अच्छा लगेगा। – Scoobie

1

का उपयोग कर हालांकि यह वास्तव में आप क्या चाहते हैं नहीं करता है, Git difftool शायद आपका सर्वश्रेष्ठ दांव है द्वारा जोड़ा जा सकता है । 'गिट difftool --tool = vimdiff --no-prompt HEAD' के बॉक्स व्यवहार से बाहर परिवर्तन के साथ कामकाजी डीआईआर में प्रत्येक फ़ाइल के लिए अनुक्रमिक रूप से vimdiff लॉन्च करना है।

3

अनुकूली उपयोगकर्ताओं के लिए अनुकूलित बेंजामिन बैनियर + डेव किर्बी का उत्तर अनुकूलित।

क्योंकि मैं fugitive.vim उपयोग करते हैं, मैं अपने सबसे लगातार उपयोग के मामले के लिए ऊपर अनुकूलित, पिछले 2 प्रतिबद्ध के बीच अंतर को देख:

vim -p $(git diff --name-only HEAD~1 HEAD) -c "tabdo :Gdiff HEAD~1" 

टैब में सभी परिवर्तनों को लोड हो रहा है तो बेहतर है git difftool के साथ अनुक्रमिक रूप से उनके माध्यम से जाने से पहले।

0

यह सरल प्लगइन मेरे लिए काम किया है: TabMultiDiff। यह मूल रूप से विम को पारित फ़ाइलों की प्रत्येक जोड़ी के लिए एक diff टैब बनाता है। टैब को प्रत्येक जोड़ी में दूसरी फ़ाइल के नाम पर रखा गया है।

नोट करें यह plugin manager compatible नहीं है, इसलिए आपको इसे tab-multi-diff.vim से .vim/plugin पर कॉपी करके मैन्युअल रूप से इंस्टॉल करने की आवश्यकता है।

यहां सरल फ़ाइलों (aaa/aab और aac/aad) के दो जोड़े की तुलना करने का एक स्क्रीनशॉट है। ध्यान दें कि मैं vim-scripts/diffchar.vim का भी उपयोग करता हूं, यही कारण है कि अलग-अलग वर्ण हाइलाइट किए जाते हैं। enter image description here