मान लीजिए कि मेरे पास बहुत सरल फ़ाइल है
a
b
c
d
e
और मैंने तय किया है कि मैं प्रत्येक पंक्ति के बाद खाली लाइनें जोड़ना चाहता हूं। कई अलग-अलग तरीके तुरंत मेरे दिमाग में आते हैं। हम बस यह कर सकते हैं (और इस तरह विफलता को गले लगाओ)। हम एक मैक्रो को रिकॉर्ड कर सकते हैं qqo<ESC>jqऔर इसे कई बार दोहरा सकते हैं।
उस समय मेरे लिए दो अन्य तरीके स्पष्ट थे।
सबसे पहले, मैंने सोचा था कि मैं प्रत्येक पंक्ति पर :normकमांड जारी करूंगा o। तो मैं दौड़ता हूं :%norm o। लेकिन वास्तव में क्या होता है कि हमें 5 रिक्त रेखाएं मिलती हैं, इसके बाद ऊपर-अलग-अलग लाइनों को अलग किया जाता है। मैं इसका मतलब यह है कि %normवास्तव में, इस पांच लाइन फ़ाइल के पहले पांच लाइनों पर निम्नलिखित सामान्य आदेश संदेश मुद्दा उठाता है मतलब है । oआदेश एक नई लाइन बनाता है और vim "गूंगा" इस अर्थ में कि यह कुछ अन्य पहचानकर्ता द्वारा वास्तव में नहीं लाइन संख्या से संदर्भित करती और में है।
खैर, मैं शर्मिंदा था। ज़रूर। मैंने यह देखने के लिए कुछ अन्य चीजों की कोशिश की कि क्या मैं उपरोक्त विधि काम कर सकता हूं, लेकिन अफसोस, मैं नहीं कर सका। जिज्ञासा से बाहर, मैंने अपने अन्य पसंदीदा द्रव्यमान-आवेदन विधि की कोशिश की। इसके चलते मैंने कोशिश की :g/^/norm o। मेरे आश्चर्य करने के लिए, यह ठीक काम करता है! तो मेरी नज़र में, ऐसा लगता है कि vim यहाँ "dumb" नहीं है, ठीक उसी तरह जैसे कि ऊपर और बस लाइनों की संख्या से अधिक है।
वास्तव में क्या चल रहा है?
:%s/$/\r/या इस तरह:%s/\n/\r\r/:। Takeaway है कि newlines के साथ मिलान किया जा सकता है\n, लेकिन\rप्रतिस्थापन मूल्यों के रूप में लिखा जाना है ।