Vi में कुछ भी डालने के लिए esc के बजाय ctrl + c का उपयोग करता है?


15

Vi का उपयोग करते समय, आप अधिक पारंपरिक के बजाय Ctrl+ के साथ सम्मिलित मोड से बाहर निकल सकते हैं । क्या ऐसी कोई परिस्थितियां हैं जहां यह बाद के बजाय पूर्व के लिए उपयोग करने के लिए अवांछनीय होगा? क्या यह सर्वोत्तम अभ्यास के अलावा और कुछ भी नहीं तोड़ता है?CEsc


यह दुर्घटना से पूर्व को मारने के लिए अवांछनीय है, जो आपको एक त्रुटि-प्राप्त करता है Type :quit<Enter> to exit Vimऔर मुझे Google को वापस लाने का तरीका बनाता है। हिट करने iसे आपको मोड डालने का अधिकार मिल जाता है।
नौमेनन

जवाबों:


9

Ctrl-Cऔर Escमें ही नहीं हैं vi/ vimमोड डालने सहित अधिकांश मोड में,। अंतर Escट्रिगर्स संक्षिप्ताक्षर है जबकि Ctrl-cऐसा नहीं है। क्या यह आपके लिए मायने रखता है कि क्या आप या आपके द्वारा उपयोग किए जाने वाले किसी भी प्लग इन का उपयोग करना निर्भर करता है।


नोट यह ग्रहण करने के लिए सुरक्षित है कि Escऔर Ctrl-Cहै नहीं में एक ही बात मतलब है vim। इसी साइट से एक अन्य उदाहरण ब्लॉक इंसर्ट मोड से बाहर निकलने पर (अंदर नहीं vi) है।


पता करने के लिए अच्छा है, लेकिन मेरा सवाल डालने मोड से बाहर निकलने के बारे में था।
एमडीमर्रा

@ ममदररा दोह, आपके प्रश्न को गलत बताया। इन्सर्ट मोड अभी भी अलग है: अपडेटेड उत्तर देखें।
jw013

1
यहाँ मुझे सबसे महत्वपूर्ण अंतर देखना है: दृश्य ब्लॉक मोड के साथ मल्टीलाइन सम्मिलित Esc के साथ काम करता है और Cc के साथ नहीं।
18

4

मुझे लगता है कि आपका मतलब है vim, नहीं vi

यह वास्तव में काम करता है vim, हालांकि मैं इसका उपयोग नहीं करता जब तक कि मुझे 100% यकीन नहीं था कि मैं कभी भी गैर-लिनक्स ऑपरेटिंग सिस्टम को नहीं छूऊंगा। कारण यह है कि अन्य OS के अपने स्वयं के कार्यान्वयन हो सकते हैं vi, जो इसे लागू नहीं करते हैं, और आप पा सकते हैं कि viउन प्लेटफार्मों पर चलने पर, Ctrl-C का अपना पारंपरिक व्यवहार है: प्रक्रिया को बाधित करें और अपने टर्मिनल को एक अजीब स्थिति में छोड़ दें। ।


3
क्या आप किसी भी viकार्यान्वयन की ओर इशारा कर सकते हैं जो आज भी मौजूद है जो संभालता नहीं है Ctrl-C? वास्तविक अंतर के लिए मेरा जवाब देखें ।
jw013

2

यदि आप बात कर रहे हैं vim, तो थोड़ा अंतर है। CTRL-Cसंक्षिप्तीकरण के लिए जाँच नहीं करता है, और यह InsertLeaveघटना को ट्रिगर नहीं करता है । इसलिए आप या प्लगइन्स ने ऐसे किसी भी autocmdस्टेटमेंट को परिभाषित किया है जो निर्भर करता है InsertLeave, वे ट्रिगर नहीं होंगे।

आधिकारिक दस्तावेज http://vimhelp.appspot.com/insert.txt.html से :

<Esc> or CTRL-[ End insert or Replace mode, go back to Normal mode.  Finish
                abbreviation.

CTRL-C          Quit insert mode, go back to Normal mode.  Do not check for
                abbreviations.  Does not trigger the InsertLeave autocommand
                event.

आप के लिए एक मानचित्रण परिभाषित कर सकते हैं CTRL-Cकरने के लिए <esc>है, तो यह ट्रिगर किया जाएगा InsertLeave

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