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