यह मुझे दस्तावेज़ीकरण से मिलता है: \zs
पूर्ववर्ती रेगेक्स के मिलान के बाद "हाइलाइट किया गया भाग", और \@<=
पूर्ववर्ती परमाणु के मिलान के बाद "हाइलाइट किया गया भाग शुरू होता है" । लेकिन मुझे इस की सूक्ष्मता के बारे में ठीक से समझ नहीं है, तो क्या कोई यह समझा सकता है कि कैसे वे गहराई में थोड़ा और भिन्न होते हैं?
यह वही है जो मुझे जिज्ञासु बनाता है: अगर मैं दौड़ता हूं
/\_s\zsnnoremap
अर्थात nnoremap
एक स्थान या एक स्टार्ट-ऑफ़-लाइन से पहले का चयन करें (अर्थात पूर्ववर्ती पंक्ति से नई रेखा, इसलिए \_
पूर्ववर्ती s
) और फिर gn
विज़ुअल मोड में प्रवेश करने के लिए दौड़ें और नेत्रहीन अगले मैच का चयन करें , किसी कारण से केवल पहला कॉलम (यानी पहले n
में nnoremap
) का चयन किया जाता है - तथ्य यह है कि पूरे के बावजूद nnoremap
शब्द है पर प्रकाश डाला साथ :hlsearch
चालू कर दिया।
हालांकि, अगर मैं इसके बजाय खोज को चलाता हूं
/\_s\@<=nnoremap
और फिर कोशिश करो gn
, पूरी तरह nnoremap
से ठीक से चुना गया है। यहां क्या हो सकता है? क्या मैंने (कुछ कहने की हिम्मत की) कुछ अस्पष्ट बग की खोज की?
:h patterns
मेरी स्मृति से पता चलता है कि regexs परमाणुओं से बने होते हैं, अगर यह अंतर समझाने में मदद करता है।