शिफ्ट इन्सर्ट केवल इन्सर्ट मोड में पूरी तरह से काम क्यों करता है?


13

बस vim का उपयोग करके एक फ़ाइल में कुछ सामग्री (CentOS सर्वर पर Git Bash में) चिपकाने की कोशिश की।
मैंने सिर्फ फ़ाइल खोली और shift+ का उपयोग करने की कोशिश की insertऔर मैंने देखा कि पहली छमाही (मोटे तौर पर) कट जाती है, लेकिन अगर मैंने मोड डालने के लिए विम सेट किया और हिट shift+ insertसब कुछ पूरी तरह से चिपकाया जाता है।
बस सोच रहा था कि ऐसा क्यों है?

धन्यवाद


अरे, मुझे दो अंगूठे मिले हैं, !!! : डी
रॉनजॉन

जवाबों:


24

एक टर्मिनल में Shift+ Insertऔर " चिपकाने " दोनों एक समान व्यवहार करते हैं - वे प्रमुख प्रेस का अनुकरण करते हैं।

यह एक महत्वपूर्ण अंतर है जो टर्मिनलों के लिए अक्सर असंभव होता है - क्या आप टाइप कर रहे हैं या चिपका रहे हैं? नोट : कुछ टर्मिनलों का समर्थन करते हैं " कोष्ठकों के भीतर पेस्ट " मोड, के बाद @ जोश टिप्पणी मैं भी में आए एक vim प्लगइन कोष्ठक में पेस्ट टर्म जो आप में रुचि हो सकती है।

आपका पेस्ट किया गया डेटा पहले वर्ण में खो जाएगा जो एक सम्मिलित मोड में प्रवेश करता है। आपको यह भी लग सकता है कि आपका कर्सर स्थानांतरित हो गया है और फ़ाइल के अन्य भाग बदल गए हैं (जैसे: परिवर्तित मामला / हटा दिया गया है / आदि) ...

सारांश में, यदि आप उस पाठ को चिपका रहे हैं जिसे आप फ़ाइल में सम्मिलित करना चाहते हैं, तो पहले प्रविष्टि मोड डालें।


निम्न पाठ की प्रतिलिपि बनाने का प्रयास करें और इसे एक टर्मिनल में चलाएं जो विम चला रहा है (सम्मिलित मोड में नहीं):

hello how are you

परिणाम आपके कीबोर्ड पर समान अक्षरों को टाइप करने के समान है:

विम में चिपकाने का परिणाम है

इस मामले में, यह आपको इन्सर्ट मोड में छोड़ देता है ...

अब सम्मिलित मोड से बाहर निकलने का प्रयास करें - Esc- और निम्नलिखित को चिपकाएँ

/are
n

यह "हैं" की खोज करता है:

विम में चिपकाने का परिणाम है

अब इसे पेस्ट करें:

:0
dG

अरे नहीं ... सब कुछ छूट गया!

सब चले गए


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

def my_print(message):
    print(message)
    print('done...')

कोड चिपकाना

इसे ठीक करने के लिए, :set pasteऔर :set nopasteकमांड का उपयोग करें

चिपकाने वाला कोड (पेस्ट मोड)


4
"यह एक महत्वपूर्ण अंतर है जिसे टर्मिनल नहीं बना सकते - क्या आप टाइप कर रहे हैं या चिपका रहे हैं?" - यह पूरी तरह से सच नहीं है, कुछ टर्मिनल और एप्लिकेशन "ब्रैकेटेड पेस्ट" का समर्थन करते हैं, जहां पेस्ट किए गए पाठ से पहले और बाद में एक विशेष अनुक्रम भेजा जाता है।
ऐश

@ जोश: दिलचस्प, धन्यवाद ... आपकी टिप्पणी ने मुझे एक व्यर्थ प्लगइन की ओर ले जाता है
Attie

क्या मैं ही परेशान हूं set nopaste? मुझे उम्मीद है unset paste
एरिक डुमिनील

@ThisGuyHasTwoThumbs एक विकल्प के रूप में, कम से कम जब विम का उपयोग करते हैं, तो आप "+सिस्टम क्लिपबोर्ड के साथ बातचीत के लिए रजिस्टर का उपयोग करना चाह सकते हैं , क्योंकि यह अधिक पवित्र व्यवहार करेगा। नकारात्मक पक्ष यह है कि विम के कुछ सिस्टम या बिल्ड "*इसके बजाय उपयोग कर सकते हैं , या बस सिस्टम क्लिपबोर्ड समर्थन नहीं है, लेकिन मेरे अनुभव में, "+काफी विश्वसनीय रहा है।
8bittree
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.