मुझे पता है कि यह एक पुराना प्रश्न है, और @ mykola-golubyev का रास्ता स्पष्ट रूप से ओपी प्रश्न में विशेष मामले के लिए सबसे अच्छा जवाब है (जो, मुझे लगता है कि आप मोटे कोड से गुजर रहे हैं जहां आपके कई अलग-अलग नाम होने की संभावना है) ; लेकिन इस सवाल के नाम के साथ कि Google खोजों से यहां आने वाले कई लोग शायद वीआईएम में चर नाम बदलने के लिए कम स्थिति-विशिष्ट तरीकों की तलाश करते हैं - और वे अधिक संक्षिप्त हो सकते हैं
मैं हैरान हूं कि किसी ने इस तरह से सुझाव नहीं दिया:
*
:s//
नया नाम /gc
यह *
वैसा ही है gn
- यह कर्सर के नीचे शब्द की अगली घटना को खोजता है और यह अंतिम खोजा गया पैटर्न बन जाता है, इसलिए जब आप विकल्प कमांड में खोज पैटर्न को छोड़ते हैं, तो VIM यह मान लेता है कि यह खोज करने के लिए पैटर्न है।
थोड़ी मात्रा में var प्रतियों के लिए, एक भी त्वरित:
*
cw
NEWNAME <esc>
फिर n.
अन्य घटनाओं के लिए दोहराता है
घटना की खोज, परिवर्तन शब्द केcw
लिए कमांड है , अंतिम खोज शब्द की अगली घटना पर जाता है और अंतिम कमांड को दोहराता है (जो कि NEWNAME के लिए शब्द बदल जाता है )n
.
(मेरे लिए यह सब जानते हुए क्रेडिट @ Reddit पर @doomedbunnies पर जाएं )
एक और बढ़िया ट्रिक यह है: ( @ nobe4 को क्रेडिट )
*
cgn
NEWNAME <esc>
फिर .
अन्य घटनाओं के लिए दोहराता है
cgn
"परिवर्तन जो भी हो (अगली घटना को ढूंढें)" है। अब जब यह अंतिम आदेश है , तो आपको n
अगली घटना पर जाने की आवश्यकता नहीं है , इसलिए कम स्ट्रोक फिर से, और, अधिक महत्वपूर्ण बात, वैकल्पिक करने की आवश्यकता नहीं है n
और .
। लेकिन, जाहिर है, यह एक घटना को छोड़ने का तरीका नहीं होने का दोष है।
यहाँ कुछ लाभ दिए गए हैं:
- कोई मैपिंग, नहीं .vimrc (या init.vim), इसलिए आप इसे किसी भी VIM कॉपी में उपयोग कर सकते हैं जो आपको आती है (उदाहरण के लिए कुछ VPS या आपके मित्र की मशीन पर त्वरित कार्य जहां VIM को कॉन्फ़िगर करना आपके 'त्वरित' के उद्देश्य को हरा देगा) )
- शब्द चयन के लिए उपयोग करना
*
या gn
जल्दी करना - बस एक कीस्ट्रोके (ठीक है, चलो 1.5 कहते हैं)
- उपयोग
*
या gn
सुनिश्चित करता है कि आपको अन्य शब्दों के अंदर कोई मेल नहीं मिलता है, जैसा कि :%s/<C-R>//gc
करता है। :%s/\<OLDNAME\>/NEWNAME/gc
हाथों से टाइप करने वाले बीट्स : मैं व्यक्तिगत रूप से \<
केवल शब्दों तक ही मैचों को सीमित करने के लिए चीजों का उपयोग करना भूल जाता हूं ।
- स्कोप का उपयोग नहीं करने से केवल
n
अवांछित मैचों को छोड़ने के लिए कुछ अतिरिक्त स्ट्रोक होंगे - शायद गुंजाइश को सीमित करने के लिए आवश्यक अतिरिक्त स्ट्रोक से भी कम। सामान्य curcumstances के तहत, आपके चर कुछ हद तक एक निश्चित कोड ब्लॉक के लिए स्थानीयकृत हैं।