vim: क्या मैं * केवल * y एक प्रतिलिपि बना सकता हूं?


11

मैं विम को पसंद करना सीख रहा हूं, लेकिन एक चीज जिसे मैंने अभी तक पूरी तरह से गले नहीं लगाया है वह है कॉपी और पेस्ट की स्थिति। एक मुगले पाठ संपादक में Ctrl- मैं पाठ के Cएक टुकड़े की नकल करूंगा और फिर पाठ को संपादित / हटाऊंगा और फिर पाठ को कहीं और चिपका दूंगा। हालाँकि, मैं ऐसा नहीं कर सकता क्योंकि मैं पाठ की प्रतिलिपि बनाने के बाद y, पाठ को संशोधित करना अक्सर शामिल करता हूं dऔर xजो मेरे मूल पाठ को नष्ट कर देता है।

क्या पाठ को कॉपी dऔर xन बनाने का कोई तरीका है ? या अन्यथा, मुझे इन विम विशेषताओं का उपयोग कैसे करना चाहिए?

जवाबों:


16

9 पिछले यैंक को रजिस्टरों के 1माध्यम से बचाया जाता है 9। आप अगले-से-अंतिम यांक "1p, पिछले वाले के साथ "2pऔर इतने पर याद कर सकते हैं । कमांड :regउन रजिस्टरों को दिखाता है जो चिपकाने के लिए उपलब्ध हैं।

यदि आप एक यन्क को लंबे समय तक चलाना चाहते हैं, तो एक पत्र रजिस्टर का उपयोग करें

अधिक अस्पष्ट यांक से संबंधित आदेशों के लिए, :help "मैनुअल में पढ़ना शुरू करें ।


2
इसके अलावा, रजिस्टर 0 में अंतिम पाठ yanked (हटाए गए के विपरीत) होता है। मूल प्रश्न के लिए वापस जिक्र तो, आप के साथ झटका कर सकते हैं y, संपादन जारी सहित dऔर x, और साथ में yanked पाठ पेस्ट"0p
Nefrubyr

@Nefrubyr, ऊपर आपकी टिप्पणी वास्तव में सबसे सरल उत्तर है, लेकिन मौजूदा तीन उत्तरों में से किसी में भी इसका उल्लेख नहीं है। शायद आपको इसे जोड़ना चाहिए? (अगर आप नहीं कर सकते हैं।)
वाइल्डकार्ड

9

आप जिस कमांड के बारे में बात कर रहे हैं, वह तथाकथित "अनाम" रजिस्टर का उपयोग करने के लिए है। यह केवल बहुत ही अल्पकालिक उपयोग के लिए है। "मैं इसे यहाँ से याँकने जा रहा हूँ और इसे वहाँ रख दिया"।

जब आप कुछ सेकंड के लिए कुछ पर पकड़ बनाना चाहते हैं जब आप जाते हैं और कुछ और करते हैं, तो आपको नाम रजिस्टरों का उपयोग करना चाहिए।

उदाहरण के लिए, " a y yकर्सर जिस लाइन पर aरजिस्टर में है , उसे यैंक करेगा । जब तक आप aरजिस्टर से जुड़े किसी अन्य कमांड को टाइप नहीं करेंगे, तब तक यह गलती से नहीं होगा । मिनट, घंटे, यहां तक ​​कि दिनों के बाद, आप जिस कर्सर पर हैं, उसके नीचे की " a pपंक्तियों की उस यॉक्ड कॉपी को aरजिस्टर से नीचे टाइप कर सकते हैं ।

(इसके लिए वास्तव में अच्छी तरह से काम करने के लिए, आपके पास set viminfo='50,\"1000अपनी ~/.vimrcफ़ाइल की तरह एक पंक्ति होनी चाहिए , यह विम सत्रों की सामग्री रजिस्टर जैसी चीजों को याद रखने के लिए कहने के लिए। आप इसके बाद यान और पुट के बीच छुट्टी पर जा सकते हैं!)

26 नाम रजिस्टरों (az) हैं। यदि आप उन्हें ऊपर दिखाए गए के बजाय अपरकेस के रूप में देते हैं, तो आप उन्हें बदलने के बजाय वर्तमान रजिस्टर सामग्री में संलग्न करते हैं। तो, आप वास्तव में कुछ जटिल बना सकते हैं, कहते हैं, hएक समय में एक टुकड़ा रजिस्टर करें , फिर इसे एक साथ सभी को नीचे गिरा दें " h p

ध्यान दें कि रजिस्टर नाम वैकल्पिक है। तात्पर्य यह है कि आपके द्वारा पहले से ही जाने और उपयोग किए जाने वाले कई आदेश हो सकते हैं जहां आप नाम रजिस्टरों का उपयोग कर सकते हैं। :help registersसंभावनाओं के बारे में कुछ विचार प्राप्त करने के लिए विम में कहें ।

इसके अलावा, एक वी मग प्राप्त करें


1

यदि आपको अपने यैंक रजिस्टर में बदलाव किए बिना डी के साथ पाठ को हटाने की आवश्यकता है (कहते हैं, आपने पहले से ही इसमें पाठ रचा है कि आप उदाहरण के लिए अपने अन्य पाठ को हटाने से पहले चिपकाने के लिए तैयार नहीं हैं), तो आप ब्लैक होल रजिस्टर का उपयोग कर सकते हैं _

यदि आप "_ddउदाहरण के लिए करते हैं, तो वर्तमान लाइन तुरंत हटा दी जाएगी और भूल जाएगी।

वास्तव में, मैं इस रजिस्टर का उपयोग अक्सर नहीं करता हूं। यह एक सामान्य-उद्देश्य रजिस्टर (किसी भी पत्र रजिस्टर) को बचाने की तुलना में कम कीस्ट्रोक्स नहीं लेता है और यदि आप सामान्य-उद्देश्य रजिस्टर में सहेजते हैं, तो कम से कम, आपके द्वारा हटाए गए लाइनें अभी भी उपलब्ध हैं जब तक आप रजिस्टर को अधिलेखित नहीं करते हैं, यदि जरूरत पैदा होती है।

यदि आप हटाते समय किसी अन्य रजिस्टर का उपयोग करना भूल जाते हैं, तो आप ddइस तरह के उदाहरण के लिए एक आवरण मैक्रो को परिभाषित कर सकते हैं :noremap dd "add:।


0

जैसा कि (वर्तमान) स्वीकृत उत्तर के लिए टिप्पणियों में बताया गया था, ऐसा करने के लिए विहित तरीका रजिस्टर शून्य ( "0) का उपयोग करना है । रजिस्टर शून्य में हमेशा अंतिम यान होता है, और इससे अधिलेखित नहीं होगा dऔर xइसलिए, "0pइस बीच जो भी संपादित किया गया है, उसकी परवाह किए बिना हमेशा जो कुछ भी आपने लिखा है , उसे हमेशा के लिए छोड़ दें।

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