दूसरी पंक्ति से शुरू होने वाले दृश्य ब्लॉक को कैसे पेस्ट किया जाए


10

मुझे यह महसूस करने में बहुत समय लगा कि किसी चीज़ को लगाना (चिपकाना) जिसके साथ pया Pदृश्य-ब्लॉक का चयन किया गया है ctrl+vऔर उसके साथ याँक्ड (कॉपी) किया गया है y, पहले तरीके को सुरक्षित रखता है, ताकि, जब कॉपी किया गया पाठ लाइनों के बीच में हो, तो फिर जब भी संभव हो, अन्य पाठ के बीच में कॉपी किया जाएगा। इसके विपरीत, सेलेक्ट-लाइन Vअन्य टेक्स्ट के बीच कॉपी लाइन को पेस्ट नहीं करता है, बल्कि दूसरी लाइन पर शुरू होता है।

उदाहरण के लिए, मान लीजिए कि मेरे पास अब है:

12/12: Avocado. Apple.
12/13: Bean.    Banana.
12/14: Cherry.  Citron.
12/15:
12/16:
12/17:

मैं कटौती करना चाहते हैं Avocadoऔर Beanऔर Cherry, चुन कर (चयन के रूप में प्रतिनिधित्व _)

12/12: ________ Apple.
12/13: ________ Banana.
12/14: ________ Citron.
12/15:
12/16:
12/17:

और दबाने yऔर कर्सर को निम्न रेखा पर ले जाएं (कर्सर को इस प्रकार दर्शाया गया है _),

12/12: Avocado. Apple.
12/13: Bean.    Banana.
12/14: Cherry.  Citron.
_2/15:
12/16:
12/17:

और दबाएँ P। इसका नतीजा यह हुआ:

12/12: Avocado. Apple.
12/13: Bean.    Banana.
12/14: Cherry.  Citron.
Avocado.12/15:
Bean.   12/16:
Cherry. 12/17:

लेकिन मैंने जो चाहा वह था:

12/12: Avocado. Apple.
12/13: Bean.    Banana.
12/14: Cherry.  Citron.
Avocado.
Bean.   
Cherry. 
12/15:
12/16:
12/17:

इसने मुझे हर बार भ्रमित किया, जब तक कि मुझे एहसास नहीं हुआ कि क्योंकि उन्हें लाइन के बीच में कॉपी किया गया था, इसलिए उन्हें इस तरह से लाइन के बीच में चिपकाया गया, जिस तरह से वे थे।

यह किसी अन्य लाइन पर शुरू होने वाली चीज़ को चिपकाने का सबसे अच्छा तरीका है, शुरुआत के साथ कर्सर को स्थानांतरित कर रहा है 0, और नीचे 3 लाइनों को नई जगह पर ले जा रहा है; और साथ मोड डालने में प्रवेश i, और दबाने <return>6 लाइनों 3 बार, और कदम कर्सर वापस, और सही, वापस मूल स्थान पर; और कॉपी करना, और फिर से नई जगह पर जाना, और पेस्ट करना, जैसा कि मैंने ऊपर किया था।

क्या मैं कुछ स्ट्रोक बचा सकता हूं? या आप आमतौर पर क्या करते हैं?

(संपादित करें: ऊपर जो कहा गया है वह यह था कि मैंने इसे उसी क्षण समझा था जब मैंने यह पूछा था। सही स्पष्टीकरण के लिए उन उत्तरों को देखें:)

जवाबों:


11

जब आप कुछ टेक्स्ट कॉपी करते हैं, तो यह एक रजिस्टर में चला जाता है। पाठ एक रजिस्टर के अंदर एक प्रकार का है: characterwise, linewiseया blockwise

यह निर्धारित करता है कि पाठ को किस तरीके से रखा जाएगा।

आपके उदाहरण में, आपने दृश्य ब्लॉक मोड से कुछ पाठ की प्रतिलिपि बनाई। तो, पाठ का प्रकार blockwiseथा और अनाम रजिस्टर में संग्रहीत किया गया था "
इस प्रकार की वजह से, जब आप इसे वापस अपने बफर के अंदर पेस्ट करेंगे, तो यह एक ब्लॉक के रूप में चिपकाया जाएगा।


यदि आप इसे एक ब्लॉक के बजाय लाइनों के अनुक्रम के रूप में पेस्ट करना चाहते हैं, तो 3 तरीके हैं।

  1. इन्सर्ट मोड से, आप इसे मार कर सम्मिलित कर सकते हैं C-r "
    यह अनाम रजिस्टर की सामग्री को सम्मिलित करना चाहिए जैसे कि इसका प्रकार अलंकृत था।

  1. कमांड लाइन से, आप :putकमांड का उपयोग कर सकते हैं ।
    :putपाठ को एक रजिस्टर के अंदर चिपकाना चाहिए जैसे कि इसका प्रकार अलंकृत था, कोई फर्क नहीं पड़ता कि इसका मूल प्रकार है। ध्यान दें कि आप एक रजिस्टर के नाम को एक तर्क के रूप में, साथ ही नीचे निर्दिष्ट करने के लिए एक पंक्ति का पता दे सकते हैं कि आप किस लाइन को रजिस्टर करना चाहते हैं।

उदाहरण के लिए:

:42put a

... रजिस्टर की सामग्री aको 42वें पंक्ति के नीचे रखना चाहिए ।

एक रजिस्टर नाम के बिना, विम मान लेंगे कि आप अनाम रजिस्टर (या +यदि आपने ट्विस्ट किया है तो रजिस्टर 'clipboard') पेस्ट करना चाहते हैं ।
और एक पते के बिना, विम मान लेंगे कि आप इसे वर्तमान पंक्ति के नीचे पेस्ट करना चाहते हैं।


  1. कमांड लाइन से, आप setreg()फ़ंक्शन के साथ अनाम रजिस्टर का प्रकार बदल सकते हैं :

    :call setreg('"', '', 'al')

यहां, setreg()अनाम रजिस्टर ( aतीसरे तर्क के रूप में पारित किए गए ध्वज के लिए धन्यवाद) के लिए एक खाली स्ट्रिंग संलग्न करना चाहिए और इसके प्रकार को लिनेविज़ ( lध्वज के लिए धन्यवाद) में बदलना चाहिए ।

फिर, सामान्य मोड से, आपको रजिस्टर को पेस्ट करने में सक्षम होना चाहिए, pसामान्य कमांड के साथ, जैसे कि इसका प्रकार अलंकृत था।


यह सीधे आपके मुद्दे से जुड़ा नहीं है, लेकिन जब आप कुछ पाठ कॉपी करते हैं, तो यह 0रजिस्टर में भी जाता है । और यदि आपने मूल्य unnamedplusको विकल्प में रखा है 'clipboard', तो यह +रजिस्टर में भी जाता है ।

आप getregtype()फ़ंक्शन का उपयोग करके देख सकते हैं कि रजिस्टर का प्रकार क्या है :

:echo getregtype('"')

यदि यह एक लोअरकेस लौटाता है v, तो इसका मतलब है कि प्रकार चरित्रवान है।
यदि यह एक अपरकेस लौटाता है V, तो इसका मतलब है कि प्रकार अलंकृत है।
यदि यह वापस आता है ^V{some number}, तो इसका मतलब है कि प्रकार ब्लॉकवाइज है, और ब्लॉक की चौड़ाई है {some number}


3

मुझे एक निश्चित (कैरेक्टरवाइज़ / लिनिविज़ / ब्लॉकवाइज़) मोड में "कास्ट" रजिस्टर कंटेंट की आवश्यकता होती है, इसलिए मैंने इसके लिए बिना शर्त पेस्ट प्लगइन लिखा । यह बिल्ट-इन पेस्ट कमांड्स के विकल्प आदि प्रदान करता है gcp, glpजो एक निश्चित मोड (और अब तक इस विषय पर कई और भिन्नताएं लागू करते हैं, जैसे कॉमा या क्वेरिड वर्णों के साथ चिपकाना)।

इसके साथ, आप बस का उपयोग कर सकते glp/ glPके बाद पेस्ट करने के लिए / वर्तमान पंक्ति से पहले (नई लाइनों के रूप में), आप पाठ कैसे yanked है, इससे संबंध।


मैं आपसे ईर्ष्या करता हूं कि आपके पास QQ लिखने के लिए समय है लेकिन मैं इससे संतुष्ट हूं :put। (आपको भी
उकेरा गया है

@Aminopterin: मैंने उत्तर दिया है कि अक्सर, मेरे पास पहले पैराग्राफ के लिए स्निपमेट स्निपेट है। इसलिए मुझे बस थोड़ा अनुकूलित करने की आवश्यकता है। मेरे जवाब की सराहना करने के लिए धन्यवाद, और upvote!
इंगो करकट

ओह, मैंने कहा कि आप ईर्ष्या करते हैं कि आपके पास एक प्लगइन लिखने के लिए समय है, इस तरह, जैसे कि आठवीं कक्षा में किया जाता है .... केवल पिछले आधे साल में मैंने कुछ सी ++ प्रोजेक्ट लिखना शुरू किया, जो हॉबी प्रोजेक्ट के रूप में खुद को प्रोग्रामिंग सीखने के लिए मजबूर करने के लिए था, और क्या मैंने vim ~~
Violcapein

2
@Aminopterin आह ठीक है, प्लगइन की शुरुआत एक छोटे स्निपेट के रूप में की गई थी, जो कि विमटिप्स से कॉपी किया गया था, और धीरे-धीरे समय के साथ बढ़ता गया। जैसा कि यह मेरे लिए बहुत उपयोगी साबित हुआ, मैंने धीरे-धीरे इसे बहुत बढ़ाया। कई छोटे कदम एक बड़े एकल प्रयास से अधिक शक्तिशाली हैं!
इंगो करकट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.