2009-02-28 17 views
5

मेरे पिछले प्रश्न थोड़ा अस्पष्ट प्रतीत हो रहा है कि मैं इसे अलग तरीके से व्यक्त करेंगे,:, replacethis1, replacethis2, replacethis3:विम कॉपी और पेस्ट

copythis abc 
replacethis1 xyz 
qwerty replacethis2 
hasfshd replacethis3 fslfs 
And so on... 

नोट:

मैं इस तरह एक फ़ाइल ... कोई भी शब्द

मैं न्यूनतम प्रतिमान आदेशों का उपयोग करके "replacethis1", "replacethis2", "replacethis3", .. "copythis" शब्द को कैसे बदलूं।

एक तरह से मैं क्या कर सकते हैं इन चरणों का कर रहा है:

  1. हटाना "replacethis1", "replacethis2", "replacethis3", .. 'DW'
  2. प्रतिलिपि "copythis" 'YW का उपयोग कर का उपयोग करके '
  3. कर्सर को "replacethis1" कहां और' पी 'पर ले जाएं; कर्सर को "replacethis2" कहां था और 'पी' और इतने पर ...

क्या वीआईएम (वीम कमांड की कम संख्या का उपयोग करके) में ऐसा करने का कोई बेहतर तरीका है?

उत्तर

6

करने की जरूरत है आप के बाद से कर सकता है अपना प्रश्न बदल दिया, मैं इसे इस तरह से करूँगा:

पहले "replacethis1" पर जाएं और cw टाइप करें (शब्द बदलें), फिर मैन्युअल रूप से "copythis" टाइप करें।

अगले "replacethis" पर जाएं, हिट करें। अगले "replacethis", हिट करने के लिए (पिछले आपरेशन दोहराएँ)

ले जाएँ।,

और इतने पर, और इतने पर।

यदि "कॉपीथिस" एक छोटा शब्द है, तो मुझे लगता है कि यह सबसे अच्छा समाधान है।

:

+0

देखें कि आप अलग-अलग प्रतिस्थापित शब्दों में कैसे जाते हैं, यह सीडब्ल्यू के बजाय सीवी (या कब) का उपयोग करना बेहतर हो सकता है। काम करने के लिए सीडब्ल्यू के लिए आपको replacethis की शुरुआत में होना चाहिए। – user55400

0

क्या आपने स्ट्रिंग प्रतिस्थापन की कोशिश की है?

%s/replacethis/copythis 

प्रतिस्थापन को ठीक करने के लिए कई अन्य पैरामीटर संभव हैं। अधिक जानकारी के लिए विम सहायता में कूदो। कुछ और उदाहरण here

1
:%s/copythis/replacethis/g 

प्रतिलिपि के साथ प्रतियों की सभी घटनाओं को प्रतिस्थापित करने के लिए।

:8,10 s/copythis/replacethis/g 

ध्यान दें, अंत पर/जी यह बताना सभी घटनाओं को बदलने के लिए होगा: या आप की तरह लाइन नंबर की श्रेणी निर्दिष्ट कर सकते हैं। यदि आप इसे छोड़ देते हैं तो यह केवल पहला होगा।

+0

कृपया मेरा संदर्भित प्रश्न देखें –

+0

आपको दो शर्तें उलट दी गई हैं। –

0

यदि u मूलतः एक ही कार्रवाई कई बार करने की ज़रूरत है - अगली पंक्ति के दूसरे शब्द के साथ एक पंक्ति की अदला-बदली 1 शब्द, मैं कहता हूँ आप एक मैक्रो रिकॉर्ड और यह फोन जब भी आप

+0

कृपया मेरे पुनर्वित्तित प्रश्न –

1
  1. इस मानचित्रण नहीं बना नक्शा z cwcopythis^[

    (^ [एस्केप वर्ण है, तो आप का उपयोग कर Ctrl + V Ctrl + [vim में यह टाइप कर सकते हैं)

  2. प्रत्येक शब्द आप बदलना चाहते और प्रेस z करने के लिए जाना

+0

यह काम नहीं करता है क्योंकि कॉपी बफर –

+0

यह ओवरराइट करता है यह काम करेगा, यह मेरा जैसा ही सुझाव है लेकिन यह अंतर्निहित डॉट कमांड का उपयोग करने के बजाय कस्टम बाइंडिंग बनाता है। यदि आप एक ही समय में सभी शब्दों को प्रतिस्थापित नहीं कर रहे हैं तो इसका उपयोग करना शायद बेहतर है। –

+0

मैं शुरुआत में dw का उपयोग करता था लेकिन जैसे ही मैंने पोस्ट मारा, त्रुटि को महसूस किया, इसलिए मैंने इसे संपादित किया :) – Adnan

4

अंकों की जरूरत है शामिल किया जाना है, और वहाँ coul प्रत्येक पंक्ति में एक से अधिक उदाहरण होगी:

:%s/replacethis\d/copythis/g 
3

यह देखते हुए कि "replacethis [1-3]" मनमाने ढंग से असंबंधित शब्द, हो सकता है तेज/सबसे आसान यह करने के लिए जिस तरह से विश्व स्तर पर होगा:

:%s/replacethis1\|replacethis2\|replacethis3/copythis/g 

(ध्यान दें कि आपको उपयोग करने की आवश्यकता है \ | पाइप को "या" के रूप में कार्य करने के लिए। अन्यथा, vim शाब्दिक की तलाश करेगा | । चरित्र)

1

मैं एक लंबे समय के लिए भी इस के साथ संघर्ष कर रहा हूँ, मुझे लगता है कि मैं सिर्फ स्पष्ट तरीका बाहर काम किया:

उपयोग जो भी आदेश साफ है रजिस्टर आर में copythis डाल करने के लिए:

/copythis 
"rye 

फिर प्रतिस्थापन के लिए जाने के लिए और आर की सामग्री के साथ बदलना:

/replacethis 
cw<CTRL-R>r<ESC> 

तो आप कर सकते हैं बस n.n.n.n.n.n.n. उनमें से बाकी के लिए, या बेतहाशा वे कर रहे हैं di फेंडर बस प्रत्येक की शुरुआत में जाएं और .

कुंजी एक चरण में प्रतिस्थापित और पेस्ट कर रहा है ताकि आप बाद में . का उपयोग कर सकें।

0

आप उदास कर सकते हैं उदा। कर्सर के नीचे शब्द को हटाने और बफर पेस्ट करने के लिए सामान्य मोड में m कुंजी: :nnoremap m "_diwP। फिर आप वांछित शब्द की प्रतिलिपि बना सकते हैं, कर्सर को कहीं भी प्रतिस्थापित शब्द पर ले जाएं और m टाइप करें।

संपादित करें: एम को मैप करना एक बुरा विचार है क्योंकि इसका उपयोग स्थानों को चिह्नित करने के लिए किया जाता है। लेकिन आप उदाहरण का उपयोग कर सकते हैं वैसे भी ;

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