2011-04-04 12 views
55

के तहत वर्तमान शब्द की सभी घटनाओं को प्रतिस्थापित करें यदि आप विम में * दबाते हैं, तो संपादक उसी फ़ाइल में शब्द की अगली घटना की खोज करेगा। यह आपको शब्द को टाइप करने से बचाता है।विम में, कर्सर

क्या वर्तमान में कर्सर के तहत एक नया शब्द बदलने के लिए एक त्वरित तरीका है? कमांड जारी करने के लिए एक वर्ण, नए शब्द में टाइपिंग, फिर दर्ज करें।

+0

तुम भी उपयोग कर सकते हैं ** n ** के लिए ** अगले ** मैच , और ** ** ** ** ** के लिए ** (पिछला) मैच। – Orwellophile

+0

@ ऑरवेलोफाइल केवल 'एन' मेरे लिए काम करता है' बी 'डिफ़ॉल्ट रूप से वापस जाता है (शब्द की शुरुआत) '#' मेरे लिए काम करता है, जो पिछली अवधि में वापस जाता है। – JohnnyQ

+0

@ जॉनीकीक क्षमा करें जॉनी, मुझे गोंद पर उच्च होना चाहिए। यह पिछले के लिए 'n' और पिछले के लिए' N' है। यह मेरे कीबोर्ड पर लिखा गया है, इसलिए मुझे नहीं पता कि मुझे यह गलत कैसे मिला। – Orwellophile

उत्तर

50

आप उपयोग कर सकते हैं:

:%s/<c-r><c-w>/new value/g 

जहां <c-r><c-w> सचमुच टाइप करने के लिए CTRL का मतलब है - डब्ल्यूकर्सर के तहत शब्द डालने के लिए - आरCTRL

+0

धन्यवाद जॉनी, सही। – skeept

88

बस का उपयोग * और उसके बाद:

:%s//new value/ 

आप एक पैटर्न निर्दिष्ट नहीं करते हैं, विकल्प आदेश का उपयोग करता है कि पिछले एक खोज की। आपकी कॉन्फ़िगरेशन में gdefault के मान के आधार पर, आपको उस आदेश में /g संशोधक जोड़ने की आवश्यकता हो सकती है।

+3

और यदि 'नया मान' में '' '' या '/' है, तो इसे '\\ 'से बचें। – Benoit

+1

+1 बस जो मैं खोज रहा था, वीएसवीम में भी काम करता है। – 79E09796

+0

': se gd' एक ब्रेनर है, एक बार जब आप इसके बारे में जानते हैं। – sjas

11

अन्य उत्तरों के अतिरिक्त, आप वैश्विक खोज करने और प्रतिस्थापित करने के लिए अपनी .vimrc फ़ाइल में निम्न स्निपेट जोड़ कर कुछ और कीस्ट्रोक को दाढ़ी दे सकते हैं।

" Search and replace word under cursor using F4 
nnoremap <F4> :%s/<c-r><c-w>/<c-r><c-w>/gc<c-f>$F/i 
+1

मुझे यह पसंद है, अब तक मेरे लिए पूरे इंटरनेट पर सबसे अच्छा जवाब;) – Hoto

+0

वास्तव में, सबसे अच्छा तरीका, धन्यवाद! – korst1k

संबंधित मुद्दे