2011-03-13 24 views
277

मैंने आज विमडिफ़ का उपयोग करना शुरू कर दिया है, और विंडोज़ आधारित डिफ संपादकों (जैसे एक diff सेक्शन को विस्तार/संक्षिप्त करने के लिए मैंने कुछ चीजें करना चाहते हैं, पूर्ण फ़ाइल विस्तार/केवल 3 संदर्भ पंक्तियों के साथ भिन्न हैं ऊपर या नीचे, आदि)। मैं वर्तमान में केवल निम्न कमांड पता:विमडिफ़ में एक diff अनुभागों का विस्तार/पतन कैसे करें?

कीबोर्ड शॉर्टकट:

  • - वर्तमान विंडो में अन्य खिड़की से परिवर्तन प्राप्त करें।

  • पी - अन्य विंडो में वर्तमान विंडो से परिवर्तन रखो।

  • ] - अगले परिवर्तन करने के लिए कूद।

  • [ - पिछले परिवर्तन करने के लिए कूद।

  • CTRL + डब्ल्यू, डब्ल्यू - अन्य स्प्लिट विंडो पर स्विच करें (CTRL + डब्ल्यू, CTRL + डब्ल्यू मामले में एक ही बात करता है, आप चलते हैं सीटीआरएल थोड़ी देर बाद कुंजी)

क्या कोई मुझे सही दिशा में इंगित कर सकता है ताकि मैं समान सुविधाओं को दोहरा सकूं?

यह अच्छा होगा अगर मैं diffs के चारों ओर लाइनों का विस्तार/पतन कर सकता हूं, उदाहरण के लिए।

+2

के लिए आवश्यकता होती है चिपकाने के लिए नेविगेट करने के लिए परिवर्तनों की एक लंबी सूची जोड़ने/वापस करने के लिए एक शॉर्टकट, http://stackoverflow.com/q/6093746/212 देखें 9 42 – TCSGrad

+0

देखें: [विमडिफ का उपयोग गिट मेरेटूल के रूप में करें] (http://www.rosipov.com/blog/use-vimdiff-as-git-mergetool/) और [vimdiff - vim उपयोगकर्ताओं के लिए diff करने का शानदार तरीका] (http : //gingerjoos.com/blog/linux/vimdiff-the-cool-way-to-diff-for-vim-users) – kenorb

+1

यह 4 साल से अधिक समय के बाद बंद होने का सवाल देखकर मनोरंजक है, क्योंकि यह शीर्ष 3 है पोस्ट 'vimdiff' googled है! – TCSGrad

उत्तर

207
एक तरफ लोगों को आप का उल्लेख से

, मैं सिर्फ अक्सर जब diffing निम्नलिखित का उपयोग करें:

  • :diffupdate:diffu - diff पुनर्गणना>, उपयोगी होता है जब करने के बाद कई बदलाव vim के अब और कम से कम परिवर्तन नहीं दिख रहा है। ध्यान दें कि यह केवल तभी काम करता है जब फ़ाइलों को vimdiff के अंदर संशोधित किया गया हो। अन्यथा, उपयोग करें:
    • :e फ़ाइलों को फिर से लोड करने के लिए यदि उन्हें vimdiff के बाहर संशोधित किया गया है।
  • :set noscrollbind ->:set scrollbind और स्क्रॉलिंग द्वारा पुन: प्रयोज्य दोनों बफर पर अस्थायी रूप से स्क्रॉलिंग अक्षम करें।

जो आपने पूछा है वह अधिकांश है: vim user manual's chapter on folding। Diffs के बाहर मैं कभी-कभी उपयोग करता हूं:

  • zo -> खुला गुना।
  • zc -> बंद करें गुना।

लेकिन आप शायद बेहतर द्वारा कार्य किया जाएगा:

  • zr -> तह स्तर को कम करने।
  • zm -> एक और तह स्तर, कृपया।

या यहाँ तक कि:

  • zR -> कम पूरी तरह से तह, मैंने कहा !.
  • zM -> अधिकतर फोल्ड करें!

दूसरी बात यह आप के लिए, तह के उपयोग n लाइनों से पूछा, vim reference manual section on options में पाया जा सकता, section on diff के माध्यम से:

  • set diffopt=<TAB>, तो अपडेट करने या context:n जोड़ें।

आपको user manual section on diff पर भी एक नज़र डालना चाहिए।

+0

वास्तव में बहुत व्यापक !! मैं आपके द्वारा बताए गए लिंक देखता हूं, लेकिन यह देखने के लिए कि क्या मुझे और अधिक जवाब मिलते हैं (मैंने सप्ताहांत पर पोस्ट किया था, और कई लोग सक्रिय नहीं होंगे) के लिए प्रश्न को और अधिक दिनों तक खोलते रहेंगे। – TCSGrad

+0

वैसे, क्या आपको पता है कि विमडिफ का विलय/3-रास्ता हल करने आदि के लिए उपयोग किया जा सकता है? यह वास्तव में बहुत अच्छा होगा !! – TCSGrad

+1

@ shan23 3-तरफा विलय (गिट के लिए) के लिए, [यह] देखें (http://www.toofishes.net/blog/three-way-merging-git-using-vim/) बाहर। Svn पर भी वहाँ टिप्पणियां हैं। अभी भी कमांड को समझने की कोशिश कर रहे हैं जब आपके पास 4 बफर हैं (do/dp काम नहीं करते हैं)। – quornian

3

असल में यदि आप Ctrl+W W करते हैं, तो आपको उस अतिरिक्त Ctrl को जोड़ने की आवश्यकता नहीं होगी। वही बात है

+13

मुझे^डब्ल्यू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्लू डब्ल्यू। – hobbs

+0

सोचा गया कि यह https://github.com/ankr/dotfiles/blob/master/files/vimrc#L103 – ankr

4

सेट vimdiff की अनदेखी करने के मामले

gvim -d main.sql backup.sql & 

साथ vim diff ही शुरू किए गए मुझे लगता है कि annoyingly एक फ़ाइल छोटे अक्षरों में MySQL कीवर्ड शामिल हैं व्यावहारिक रूप से हर दूसरे लाइन पर अन्य अपरकेस दिखा मतभेद

:set diffopt+=icase 

यह स्क्रीन गतिशील रूप से & अपडेट करता है आप इसे आसानी से फिर से बंद कर सकते हैं

0

ctrl + w, w जैसा कि उल्लेख किया गया है, फलक से फलक पर नेविगेट करने के लिए उपयोग किया जा सकता है।

अब आप अकेले एक विशेष परिवर्तन का चयन कर सकते हैं और इसे दूसरे फलक पर पेस्ट कर सकते हैं। यहां मैं ऐसा उदाहरण दे रहा हूं जैसे कि मैं फलक 1 से फलक 2 तक कोड का अपना टुकड़ा बदलना चाहता हूं और वर्तमान में मेरा कर्सर चालू है pane1

  • उपयोग Shift-वी एक लाइन पर प्रकाश डाला और कोड की आवश्यकता के भाग को चुनने और चरण 3 के नीचे लिखा अन्य फलक में अपने परिवर्तन पेस्ट करने से जारी रखने के लिए या नीचे चाबी का उपयोग करें।

  • उपयोग दृश्य मोड और फिर, बदल यह

    1 क्लिक 'वी' यह नीचे कुंजी दृश्य मोड के पास ले जाएगा 2 अप का उपयोग करें या पर अपने आवश्यक कोड 3 क्लिक का चयन करने के Esc 'कुंजी भागने 4 अब 'yy' कॉपी करने के लिए या 'dd' का उपयोग परिवर्तन 5 कर कटौती करने के लिए 'Ctrl + W, w' 6 क्लिक 'पी' pane2 के लिए अपने परिवर्तन जहां

+0

का उल्लेख करने लायक होगा, जो आपने निर्दिष्ट किया है (पहली पंक्ति को छोड़कर) की पूरी तरह से vim की एक विशेषता है, vimdiff नहीं उसके हिसाब से। – TCSGrad