2012-03-22 10 views
5

विम के ऑनलाइन मैनुअल में, :help DiffOrig वर्तमान संपादन फ़ाइल के परिवर्तन प्राप्त करने के लिए अनुशंसित कमांड अनुक्रम दिखाएगा।विम में डिफऑरिग में 0 डी_ का उपयोग क्यों करें?

संदेश यह है:

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis 
        \ | wincmd p | diffthis 

मुझे आश्चर्य है कि क्या 0d_ का असर है। मैंने सामान्य मोड में 0d_ की कोशिश की, यह dd जैसा काम करता है, लेकिन मुझे समझ में नहीं आता कि यह यहां क्यों उपयोग किया जाता है।

+4

आपका डाउनफॉल यहां सोच रहा है कि '0d_' एक सामान्य मोड कमांड है जब यह वास्तव में एक पूर्व कमांड होता है। इस तरह की पाइपलाइन में कुछ भी हमेशा एक पूर्व कमांड होगा। वास्तव में यहां क्या चल रहा है, '0delete _' जैसा है यदि यह स्पष्ट करता है। –

+1

@RandyMorris में जोड़ें टिप्पणी: यदि आपको पूर्व मोड में सामान्य मोड कीस्ट्रोक खेलने की आवश्यकता है तो आप 'मानक' का उपयोग कर सकते हैं (और इसे बाध्य करने के लिए 'exec: exec 'के साथ संयोजित कर सकते हैं: यह मोटे तौर पर' ... के बराबर है। exec 'norm gg "_dd' | diffthis | ...' – Benoit

+0

@ रैंडी मॉरिस, धन्यवाद। मुझे लगता है कि यह सामान्य मोड कमांड है। – longbowk

उत्तर

8

की यह थोड़ा समझाता हूँ: मान लीजिए आप (लाइन नंबर के साथ) से युक्त मूल foo.txt है:

    :

    1 a 
    2 c 
    3 d 
    ~ 
    

    आप लाइन 1 और 2 के बीच "बी" वाली पंक्ति को शामिल किया है

  • :vert new एक नया, रिक्त, एक ऊर्ध्वाधर विभाजन (:help :new)
  • :set bt=nofile बनाता है यह एक खरोंच बफर (:help 'bt') में बफर पैदा करता है। नोट:

    1 a | 1 ·<cursor here 
    2 b | ~ 
    3 c | ~ 
    4 d | ~ 
    ~ | ~ 
    
  • :r # आवेषण वर्तमान पंक्ति के बाद, वैकल्पिक फ़ाइल की सामग्री (#), फाइल सिस्टम पर संग्रहीत के रूप में। आपने अन्य बफर को नहीं बचाया है, इसलिए आपको मूल सामग्री मिलती है। (:help alternate-file)।
    :help :r आपको बताता है कि यह हमेशा बाद में सम्मिलित होता है। इसलिए:

    1 a | 1 
    2 b | 2 a 
    3 c | 3 c 
    4 d | 4 d 
    ~ | ~ 
    
  • :0d_ पहली पंक्ति को हटा। क्यों 0, मुझे यह वास्तव में पता नहीं है, मैं लिखूंगा :1d_:help range बताता है:

    जब एक 0 (शून्य) का उपयोग करते हुए इस सबसे आदेशों

    _ यह बताता है कि यह ब्लैक होल रजिस्टर करने के लिए चला जाता है के द्वारा एक 1 के रूप में व्याख्या की है। :help :d:d पूर्व कमांड के बारे में देखें, यह लाइन के अनुसार काम करता है।

शेष स्पष्ट है।

+1

टीएल; डीआर ": 0 डी_ पहली पंक्ति को हटा देता है" - बाकी स्पष्ट है :) +1 – sehe

+0

@sehe: TL; DR ': 0d_' पहली पंक्ति को हटा देता है क्योंकि': r' ने रिक्त रेखा के नीचे मूल फ़ाइल सामग्री डाली। – Benoit

+0

धन्यवाद आप दोनों बहुत अधिक हैं। यह काले रंग की पहली पंक्ति को हटा देता है -होल रजिस्टर – longbowk

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