मैं विम को 3-तरफ़ा मर्ज के रूप में भी उपयोग कर रहा हूं और कभी-कभी स्थानीय और दूरस्थ दोनों शाखाओं से परिवर्तन लेने की आवश्यकता होती है। kdiff3
कुंजी प्रेस के एक जोड़े के साथ ऐसा कर सकते हैं, वहाँ विम में ऐसा करने का एक तरीका है?
मैं विम को 3-तरफ़ा मर्ज के रूप में भी उपयोग कर रहा हूं और कभी-कभी स्थानीय और दूरस्थ दोनों शाखाओं से परिवर्तन लेने की आवश्यकता होती है। kdiff3
कुंजी प्रेस के एक जोड़े के साथ ऐसा कर सकते हैं, वहाँ विम में ऐसा करने का एक तरीका है?
जवाबों:
जैसा आपने पूछा था वैसा नहीं, लेकिन यह उपयोगी हो सकता है: स्प्लिट प्लगइन: तीन-तरफा मर्ज के दौरान संघर्षों को हल करने के लिए एक विम प्लगइन । यह Vimeo पर एक अच्छा डेमो स्क्रैंकास्ट है ।
यदि आप डिफ़ॉल्ट vimdiff के साथ छड़ी करने जा रहे हैं, तो आप सरेंडर करने वाली खिड़कियों के लिए बफर नंबर प्राप्त करने के लिए एक फ़ंक्शन बना सकते हैं और उन्हें :diffget
दो बार कॉल करने के लिए उपयोग कर सकते हैं :
*:diffg* *:diffget*
:[range]diffg[et] [bufspec]
Modify the current buffer to undo difference with another
buffer. If [bufspec] is given, that buffer is used. If
[bufspec] refers to the current buffer then nothing happens.
Otherwise this only works if there is one other buffer in diff
(...)
The [bufspec] argument above can be a buffer number, a pattern for a buffer
name or a part of a buffer name. Examples:
:diffget Use the other buffer which is in diff mode
:diffget 3 Use buffer 3
:diffget v2 Use the buffer which matches "v2" and is in
diff mode (e.g., "file.c.v2")
आप उन्हें इस फ़ंक्शन में कॉल का उपयोग करने के लिए मैपिंग का उपयोग कर सकते हैं kdiff3
।
आप इस विमकास्ट के बारे में अधिक जानकारी पा सकते हैं ।
yak और put बिना किसी प्लगइन्स या अतिरिक्त फ़ंक्शन के काम कर सकते हैं, हालाँकि यह, शायद, dgया की तुलना में थोड़ा सुविधाजनक हैdp
बस मूल बफ़र्स से आवश्यक बिट्स की प्रतिलिपि बनाएँ और मर्ज किए गए बफ़र में सही स्थान पर चिपकाएँ। यह भी उपयोगी है अगर आप पूरी चीज़ के बजाय एक अलग ब्लॉक का हिस्सा चाहते हैं।
आपको कई बार, विम को अलग-अलग हाइलाइटिंग को अपडेट करने के लिए मजबूर करने की आवश्यकता हो सकती है :diffupdate
।
आप बस गिट संघर्ष मार्करों के साथ लाइनों को हटा सकते हैं। निम्नलिखित दो विधियाँ उन सभी लाइनों को हटा देंगी जो इसके साथ शुरू होती हैं:
<<<<<<<
=======
>>>>>>>
विधि 1: मैन्युअल रूप से एक कमांड दर्ज करना और निष्पादित करना
:g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d
विधि 2: एक उपयोगकर्ता निर्धारित आदेश को लागू करना
"Delete all Git conflict markers
"Creates the command :GremoveConflictMarkers
function! RemoveConflictMarkers() range
echom a:firstline.'-'.a:lastline
execute a:firstline.','.a:lastline . ' g/^<\{7}\|^|\{7}\|^=\{7}\|^>\{7}/d'
endfunction
"-range=% default is whole file
command! -range=% GremoveConflictMarkers <line1>,<line2>call RemoveConflictMarkers()
विम अंतर और विसरित केवल एक शाखा या दूसरे का चयन करेंगे। तो ऊपर दिए गए एक के अलावा एकमात्र वास्तविक समाधान मैन्युअल रूप से yank है और दोनों फाइलों से काम की प्रतिलिपि में पेस्ट करना है।