कॉपी करें, हटाएं, फिर विम में पेस्ट करें


15

मैंने कल ही विम के साथ शुरुआत की थी और मुझे कॉपी और पेस्ट समझने में परेशानी हो रही है। मुझे लगता है मैं कॉपी करने के लिए समझ में दृश्य मोड, पर प्रकाश डाला और फिर yank। मैं तब उस पंक्ति पर जाता हूं जिसे मैं चिपकाना चाहता हूं, लेकिन अधिक बार नहीं तो मुझे इस पंक्ति से कुछ पाठ हटाने की आवश्यकता नहीं है। मैं इस का उपयोग कर xया dw। मेरी मूल प्रति में यह तो परिणाम (के रूप में ओवरराइट किया जा रहा है xऔर dwकटौती करने लगते हैं)। मैं इसके आसपास कैसे पहुंचू?

इसे एक उदाहरण में रखना है

$foo = $this->foo->property;
thislineuses($foo);

इसलिए उपरोक्त कोड के साथ मैं कॉपी करता हूं $this->foo->property, फिर मैं लाइन 2 पर जाना चाहता हूं, हटाएं $fooऔर पेस्ट करें। मुझे समस्या यह है कि जब मैं $fooलाइन 2 से हटाता हूं तो इसके बाद क्या चिपकाया जाता है $this->foo->property

जवाबों:


16

देख लेना :h copy-move। डिफ़ॉल्ट यान या डिलीट एक जगह में जाता है जिसे रजिस्टर (रजिस्टर नाम ") कहा जाता है । यदि आपको पेस्ट करने से पहले कुछ पाठ हटाने की आवश्यकता है, तो आपको रजिस्टर एक्स से बचने की जरूरत है, जैसा कि आपने खोजा है। सौभाग्य से, आप एक अलग रजिस्टर के नाम के लिए किसी अन्य पत्र या संख्या का उपयोग कर सकते हैं।

  • "ayy(रजिस्टर में एक लाइन yank a)
  • x, ddआदि (कुछ पाठ को अनाम रजिस्टर में हटा दें ")
  • "ap(रजिस्टर से टेक्स्ट पेस्ट करें a)

10

यदि समस्या यह है कि आपको केवल कुछ के textसाथ कुछ को बदलने की आवश्यकता है text2, तो, बस हाइलाइट करें और yank करें text2। फिर उजागर textऔर प्रेस pया Pचिपकाने के लिए text2के स्थान पर text

कुछ सामान्य विम आदेशों के लिए एक त्वरित गाइड http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know

का आनंद लें!

संपादित करें: ध्यान दें कि pपाठ को कर्सर के बाद और कर्सर Pसे पहले चिपकाया जाता है।


यह अच्छा है क्योंकि आपको मध्यवर्ती रजिस्टरों के बारे में सोचने की ज़रूरत नहीं है। यह सिर्फ काम करता है।
जॉन स्कोनिंग

7

आप एक नामित रजिस्टर में कॉपी कर सकते हैं "ayw, अपना डिलीट कर सकते हैं और फिर नामित रजिस्टर से पेस्ट कर सकते हैं "ap

हालाँकि, आमतौर पर यह आसान होता है कि आप जो ऑर्डर करते हैं उसमें सिर्फ बदलाव करें। पेस्ट करें और फिर डिलीट, या डिलीट करें और फिर कॉपी या पेस्ट करें।

वैकल्पिक रूप से, आप ब्लैक होल रजिस्टर में हटा सकते हैं "_dHttps://stackoverflow.com/q/54255/70863 देखें


3

आपके पास विभिन्न रजिस्टर हैं जिनका उपयोग आप विभिन्न पाठ मानों को रखने के लिए कर सकते हैं। यदि आप पाठ को एक अलग रजिस्टर में सहेजना चाहते हैं, जहां से हटाए गए पाठ का उपयोग किया जाएगा (अर्थात उपयोग करने से xया d w), निम्न का उपयोग करके:

रजिस्टर में पाठ को बचाने के लिए a:

  • प्रेस " a[यान और आंदोलन कमांड] (रजिस्टर में पाठ बचाता है a)
  • उस जगह पर जाएं जहां आप टेक्स्ट पेस्ट करना चाहते हैं
  • प्रेस " a p(रजिस्टर से पेस्ट पाठ a)

आप कीबोर्ड पर प्रत्येक अक्षर और प्रत्येक नंबर के लिए एक रजिस्टर का उपयोग कर सकते हैं। पाठ को हटाने से उन रजिस्टरों का उपयोग नहीं किया जाएगा, इसलिए पाठ तब तक रजिस्टर में रहेगा जब तक आप अपना सत्र समाप्त नहीं करते या मैन्युअल रूप से कुछ और नहीं डालते।


0

आप पूरी लाइन को उजागर करना है, तो आप का उपयोग नहीं है v(के रूप में करने का विरोध किया Vदृश्य मोड)। अगर ऐसा है जो आप के लिए पूछ रहे हैं।

यदि आप कॉपी किए गए पाठ को संशोधित करने के बारे में बात कर रहे हैं, तो आप पहले कॉपी करें और भागों को मिटा दें।

और यदि आप कॉपी करना चाहते हैं, तो मूल को संशोधित करें और फिर पेस्ट करें, फिर आप अन्य रजिस्टर में जमा कर सकते हैं। जैसे "2y, फिर संशोधित करना, फिर कहीं और जाना और "2p

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.