2011-11-23 3 views
7

रखे जाने के तुरंत बाद टेक्स्ट को बदल दें या हाल ही में y एंकिंग और p बहुत सारे कोड का उपयोग कर रहा है जिसे कुछ हद तक बदला जाना चाहिए (आमतौर पर केवल एक साधारण प्रतिस्थापन)। मैं इसे चिपकाए जाने के बाद मैन्युअल रूप से चुन सकता हूं, या लंबे समय तक ब्लॉक के लिए मुझे लगता है कि मैं चिपकाने वाली लाइनों की संख्या देख सकता हूं (20 new lines) और 20:s... का उपयोग करें, लेकिन यह देखते हुए कि यह विम है, ऐसा लगता है कि वहां एक आसान/तेज़ तरीका होना चाहिए यह करो।विम

तो क्या टेक्स्ट पर प्रतिस्थापन का चयन या निष्पादन करने का कोई तरीका है क्योंकि यह p है?

उत्तर

8

तुरंत बाद p का निष्पादन, [ और ] निशान चिपकाया क्षेत्र के आरंभ और अंत लाइन नंबर का उल्लेख (y दौरान लागू होता है के रूप में अच्छी तरह से)। स्पष्टीकरण के लिए '[ और '] के लिए सहायता देखें।

इस प्रकार, आप :s पर :'[,']s/// के रूप में काम करने के लिए इन अंकों का उपयोग कर सकते हैं। यह तब क्षेत्र में काम करेगा या सिर्फ चिपकाया जाएगा। निश्चित रूप से, यह छोटा नहीं है, लेकिन यदि आप इसकी परवाह करते हैं तो आप इसे मानचित्र बना सकते हैं। शायद nnoremap <Leader>p p:'[,']s/ जैसे कुछ।

+1

बिल्कुल सही, धन्यवाद। एक और उदाहरण है कि आप कल्पना कैसे कर सकते हैं, vim कर सकते हैं। – Kevin

3

क्रिस मॉर्गन पहले ही सबसे अच्छा समाधान पोस्ट कर चुका है। लेकिन आप पंजीकरण में सीधे पाठ पर कुछ प्रकार के हेरफेर भी कर सकते हैं।

:let @" = substitute(@",'someword', 'somedifferentword','g') 

फिर बदल रजिस्टर पाठ चिपकाएँ: तो आप की तरह कुछ कर सकते हैं झटका के लिए डिफ़ॉल्ट रजिस्टर, " है। मल्टी-लाइन रजिस्टर टेक्स्ट में लाइन-संदर्भ से संबंधित हेरफेर के लिए उतना आसान नहीं है, क्योंकि रजिस्टर में टेक्स्ट एक प्रारंभिक पैटर्न (^) और एक अंत ($) वाला एक स्ट्रिंग है। लेकिन अभी भी उपयोगी हो सकता है।

बस सोचा कि मैं इसे वहां फेंक दूंगा, क्योंकि ऐसा कुछ है जो मैं कभी-कभी करता हूं।

+0

भी जानना अच्छा है, धन्यवाद। – Kevin