मान लीजिए कि मेरे पास बहुत सरल फ़ाइल है
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
प्रतिस्थापन मूल्यों के रूप में लिखा जाना है ।