विम में सबसे विनाशकारी "भूल-से-प्रवेश-डालें-मोड" अनुक्रम


10

प्रिटेंड करें आपके पास एक मनमाना पाठ फ़ाइल है (जिसे आप चुन सकते हैं)।

कीस्ट्रोक्स का अनुक्रम दें जो सबसे विनाशकारी (*) है यदि इसे पाठ में सम्मिलित करने का इरादा था, लेकिन इसके बजाय सामान्य मोड में दर्ज किया गया था (अर्थात i/ aदबाया नहीं गया था)। आप दृश्य मोड में प्रवेश नहीं कर सकते हैं और विम को नहीं छोड़ सकते।

विनाशकारी को निम्नानुसार परिभाषित किया गया है: आवश्यक कीस्ट्रोक्स की संख्या से परिवर्तित / हटाए गए वर्णों का अनुपात।
यदि आपके परिवर्तन undos की निश्चित संख्या से पूर्ववत नहीं किए जा सकते हैं तो आपको बोनस अंक मिलते हैं।


उदाहरण: बिना लाइन ब्रेक के इनपुट फ़ाइल। इनपुट अनुक्रम: dfs


[कोड-गोल्फ] टैग का अर्थ है सबसे कम वर्ण जीतता है। आप चुनौती इससे अधिक जटिल हैं, इसलिए मैंने टैगिंग को बदल दिया है।
dmckee --- पूर्व-मध्यस्थ ने बिल्ली का बच्चा

जवाबों:


3
: 0,0 w 
:r

खंडहर सब कुछ पूर्ववत नहीं


1
मुझे समझ नहीं आता कि यह सब कुछ कैसे बर्बाद करता है! जब मैं इस स्क्रिप्ट को चलाता हूं तो यह मेरी फ़ाइल की सामग्री को डुप्लिकेट करता है और पूर्ववत काम करता है! क्या आप समझाएँगे? धन्यवाद :)
saeedn

@saeed :0,0 wको 0 से 0 तक की पंक्तियाँ लिखनी चाहिए और :rफिर इसे पढ़ना होगा (अब खाली) वापस, मुझे वास्तव में इसे परखने की कोई ज़रूरत नहीं है
शाफ़्ट फ्रीक

1
खैर, सबसे पहले, : 0,0 wएक आंशिक बफर लिखते हैं, इसलिए (मेरे) विम इसे बचाने से इनकार करते हैं, मुझे w!इसके बजाय कहना होगा w। अब तक अच्छा है, अब :rफ़ाइल को फिर से खोलना नहीं है। इसके बजाय, आपको यह कहना :eहोगा कि फाइलसिस्टम से फाइल में कौन पढ़ेगा। हालाँकि, हालांकि इस संशोधनों के साथ यह बफर को बदलता है, बफर खाली से बहुत दूर है। इसमें पहली पंक्ति शामिल है (क्योंकि आपने "0,0" सहेजा है)। कम से कम undoing काम नहीं करता है।
बिटमैस्क 23

3
:set ul=-1
ggdG
:w

यह फ़ाइल की सामग्री को साफ़ करता है और उसे बचाता है। कोई पूर्ववत संभव नहीं है क्योंकि undolevelएक नकारात्मक संख्या पर सेट है, जो पूर्ववत संचालन को अक्षम करता है।

संपादित करें: इसके :g/^/dबजाय लिखना बेहतर है ggdG, क्योंकि बाद वाले मामले में आप pपरिवर्तनों को रोल-बैक करने के लिए (डाल) का उपयोग कर सकते हैं ।


ggdGद्वारा प्रतिस्थापित किया जा सकता है:%d
kenorb

@kenorb हाँ, यह छोटा है, लेकिन इसमें भी समस्या है ggdG, जिसे डालकर ( p) उल्टा किया जा सकता है , इसलिए :g/^/dअभी भी एक बेहतर विकल्प लगता है :)
saeedn

@saeedn :%d_से छोटा है :g/^/dऔर putसमस्या का समाधान भी करता है।
रिच

इसके अलावा, इस उत्तर को लिखने के संभावित संदर्भ के बाहर, मुझे यकीन नहीं है कि कोई भी गलती से उन कीस्ट्रोक्स को टाइप करेगा, यह सोचकर कि वे सम्मिलित मोड में थे। ;)
रिच

2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. पूर्ववत अक्षम करता है
  2. पात्रों को हटाता है
  3. / Dev / urandom से 1G डेटा पढ़ता है
  4. बचाता है

नियमों को मोड़ना, क्योंकि मैं वर्ण जोड़ रहा हूं (ऐसा चरित्र जो वहां नहीं है और अब है, इसका मतलब है कि एक चरित्र बदल गया था)। मैं जितना चाहे उतना अक्षर जोड़ सकता हूं ताकि यह स्कोर सैद्धांतिक रूप से अनंत हो।


0

5 बाइट्स:

:bd!

इसके बाद एंटर का बटन दबाएं।

उस फ़ाइल की वर्तमान स्थिति को फेंक दें जिसे आप मेमोरी से संपादित कर रहे हैं, इसलिए उस फ़ाइल के सभी सहेजे न गए परिवर्तन खो गए हैं। यदि आपके पास अन्य फाइलें खुली हैं, तो वे प्रभावित नहीं होती हैं। यदि आपके पास केवल एक फ़ाइल खुली है, तो भी यह विम नहीं छोड़ता है।

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