उपयोग मामले के बारे में आपकी टिप्पणी पढ़ने के बाद, ऐसा लगता है कि आप मैक्रो के बजाय एक कुंजी मैपिंग का उपयोग कर सकते हैं।
मेरे पास यह लाइन मेरे .vimrc (याद नहीं है कि मुझे यह कहां मिली):
nnoremap <Leader>s :%s/\<<C-r><C-w>\>//g<Left><Left>
यह आपके द्वारा वर्णित उपयोग के मामले में एक समान प्रभाव डालता है, आपको कमांड लाइन पर डालता है, इसलिए केवल एक चीज जो आपको करनी है वह है प्रतिस्थापन और प्रेस दर्ज करें, लेकिन इस मामले में, आपके कर्सर के तहत आने वाले शब्द की सभी घटनाओं को प्रतिस्थापित करना। ।
बस वर्तमान ब्लॉक के भीतर बदलने के लिए, मुझे लगता है कि निम्नलिखित की तरह कुछ काम करना चाहिए:
nnoremap <Leader>s m'va{<ESC>``:'<,'>s/\<<C-r><C-w>\>//g<Left><Left>
बेशक, आप जो भी कुंजी चाहते हैं, उसे मैप कर सकते हैं।
ऊपर क्या होता है: अनाम मार्कर का उपयोग करके वर्तमान स्थिति को चिह्नित करें, नेत्रहीन वर्तमान ब्लॉक का चयन करें, दृश्य मोड को छोड़ दें और कर्सर को सहेजे गए स्थान पर लौटें (दृश्य चयन मार्कर अभी भी सेट हैं), कमांड मोड दर्ज करें और स्थानापन्न कमांड टाइप करें , उस शब्द को सम्मिलित करना जो कर्सर के साथ था <C-r><C-w>
, और प्रतिस्थापन को टाइप करने के लिए अपने कर्सर की स्थिति।