कहो मैं सिर्फ एक चरित्र 'एस' के साथ एक पंक्ति है, के विभिन्न परिस्थितियों में \n
के प्रभाव देखने चलते हैं: N और विम
:s/s/a\nb
a^@b
:s/s/a\\nb
a\nb
:s/s/a\\\nb
a\^@b
:s/s/a\\\\nb
a\\nb
:echo "a\nb"
a
b
:echo "a\\nb"
a\nb
:echo "a\\\nb"
a\
b
:echo "a\\\\nb"
a\\nb
तो क्यों \n
करता है अलग व्यवहार करते हो? तब की हालत substitute()
:echo substitute(" ", " ", "a\nb", "")
a
b
:echo substitute(" ", " ", "a\\nb", "")
a
b
:echo substitute(" ", " ", "a\\\nb", "")
a
b
:echo substitute(" ", " ", "a\\\\nb", "")
a\nb
इस बार का उपयोग कर देखते हैं, \n
अभी भी "नई पंक्ति" के रूप में व्याख्या की है, लेकिन कैसे बैकस्लैश व्याख्या करने के लिए?
अगला हिस्सा है, का कहना है कि मैं अभी भी सिर्फ एक चरित्र 'एस' के साथ एक पंक्ति है \n
के बजाय, \r
का अध्ययन किया जा रहा है:
:s/s/a\rb
a
b
:s/s/a\\rb
a\rb
:s/s/a\\\rb
a\
b
:s/s/a\\\\rb
a\\rb
\r
के प्रभाव :echo "a\nb"
में \n
तरह है, और बैकस्लैश का नियम वही है।
:echo "a\rb"
b
:echo "a\\rb"
a\rb
:echo "a\\\rb"
b\ "This is the most strange case!!!
:echo "a\\\\rb"
a\\rb
\r
इस मामले में क्या करता है? और तीसरा सबकेस भी अजनबी है।
:echo substitute(" ", " ", "a\rb", "")
b
:echo substitute(" ", " ", "a\\rb", "")
b
:echo substitute(" ", " ", "a\\\rb", "")
b
:echo substitute(" ", " ", "a\\\\rb", "")
a\rb
फिर भी, मैं कैसे अलग संख्या नहीं समझ सकता की बैकस्लैश व्यवहार करते हैं।
मेरा प्रश्न हैं:
- क्यों
\n
या\r
व्यवहार अलग ढंग से:substitute
के तहत,echo
सीधे औरsubstitute()
? substitute()
का उपयोग करते समय बैकस्लैश के प्रभाव की विभिन्न संख्याओं को कैसे समझाया जाए?- विम में
\n
और\r
के बीच अंतर क्या हैं?
अनुपूरक 1:
अगर मैं :let s = "a\\\nb"
और फिर <C-r>=s
बफर में यह देखने के लिए, मैं देख
a\
b
कैसे यह समझाने के लिए?
बहुत बढ़िया उत्तर! मैं लगभग इसे प्राप्त करता हूँ। विचार करें: गूंज विकल्प ("", "", "एक \\\ आरबी", "") ", एक व्याख्या के बाद' a \\\ आरबी "का अर्थ 'ए \ आरबी'' के रूप में क्यों किया जाता है? क्या यह विकल्प 'विकल्प()' के कारण है? एक व्याख्या के बाद यह एक \^एमबी' नहीं होना चाहिए? – fujianjin6471
@ fujianjin6471 यह है। लेकिन '\^एम' का अर्थ ज्यादातर अनिर्धारित है। ': H/\\ 'से एक बैकस्लैश, जिसके बाद कोई विशेष अर्थ नहीं है, भविष्य के विस्तार के लिए आरक्षित है। वर्तमान में '\^एम' को कैरिज रिटर्न के रूप में व्याख्या किया जाता है। यदि आप बफर में '^ एम' रखते हैं तो आप इसे देख सकते हैं (' ') और फिर'/\^एम' के लिए खोजें। और देखें कि '^ एम 'मिलान हो जाता है। (इस व्यवहार पर निर्भर न करें) –
FDinoff
धन्यवाद, लेकिन अगर मैं 's:" a \\\ nb "' और फिर ' = s' को बफर में देखने के लिए, मुझे कुछ वास्तव में अस्पष्ट दिखाई देता है। मैं इसे प्रश्न में दिखाता हूं। –
fujianjin6471