"U" और "CTL-R" का उपयोग करते समय एकल "एडिट" का आकार कैसे निर्धारित करता है?


17

जब उपयोग uया CTL-Rपूर्ववत या फिर से संपादित करने के लिए vim में, मैं पाठ के विखंडू को बदलने के लिए लगता है, न कि सबसे हाल ही में कीस्ट्रोक में।

किसी एकल संपादन को माना जाने वाले चंक का आकार क्या निर्धारित करता है?

जवाबों:


19

आप की परिभाषा देख रहे हैं undo-blocks

से :h undo-blocks:

एक पूर्ववत आदेश आम तौर पर एक टाइप की गई कमांड को पूर्ववत् करता है, चाहे वह कितने भी बदलाव करता हो। पूर्व-सक्षम परिवर्तनों का यह क्रम पूर्ववत ब्लॉक बनाता है। इस प्रकार यदि टाइप की हुई (s) फ़ंक्शन को कॉल करती है, तो फ़ंक्शन के सभी कमांड एक साथ पूर्ववत हैं।

उसी ब्लॉक का उपयोग किया जाता है redo। से :h redo:

अंतिम बदलावों को याद किया जाता है। आप प्रत्येक परिवर्तन से पहले पाठ को वापस करने के लिए ऊपर दिए गए पूर्ववत और फिर से करें आदेशों का उपयोग कर सकते हैं। आप पूर्ववत किए गए पाठ को वापस प्राप्त करते हुए, फिर से परिवर्तन भी लागू कर सकते हैं।


4
आप CTRL-G uसम्मिलित मोड में कमांड के साथ मैन्युअल रूप से एकल पूर्व-खंड को भी तोड़ सकते हैं , जो आपके पास कुछ सम्मिलित मोड मैक्रोज़ होने पर उपयोगी है।
fruglemonkey

8

विम के मोडल संपादन अक्सर एक के रूप में देखा जाता है ऑपरेटर (उदाहरण के लिए c, d...) एक पर लागू गति (जैसे iw, w, }, ...)। एक अद्भुत उत्पाद के रूप में विम चंकी पूर्ववत हो जाता है। जहां अन्य संपादकों को पूर्ववत ब्लॉक में कई छोटे पूर्ववत बनाने के लिए कुछ अनुमान लगाना पड़ता है, विम स्वाभाविक रूप से ऐसा करता है। एक अन्य पक्ष प्रभाव यह है कि आप एक दोहराने ऑपरेटर, .(उर्फ डॉट कमांड) देता है।

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

कभी-कभी इन्सर्ट मोड में रहते हुए एक पूर्व ब्लॉक को विभाजित करने की आवश्यकता होती है। इसे <c-g>uइन्सर्ट मोड में रहते हुए पूरा किया जा सकता है। देखें :h :undojऔर :h undo-blocksअधिक जानकारी के लिए।

अधिक मदद के लिए मैं निम्नलिखित सुझाव देता हूं:

:h undo-blocks
:h :undoj
:h undo-tree
:h persistent-undo
:h undo.txt

इस विषय पर कुछ पेंच भी हैं:


"चंकी पूर्ववत" - सबसे अच्छा विवरण मैंने देखा है।
मैट पार्कर

6

आप इसे इस तरह भी सोच सकते हैं: हर बार जब आप पाठ को संपादित करने के लिए मोड डालने के लिए जाते हैं और आप हिट करते हैं Esc, तो यह ब्लॉक बन जाएगा। यदि आप उस ब्लॉक को पूर्ववत् करने का प्रयास करते हैं, तो आप सम्मिलित मोड में आने से पहले उसी स्थिति में जाएंगे।

इसलिए आप समय-समय पर इन्सर्ट मोड से बाहर निकल कर अपने बदलावों को "सेव" कर सकते हैं: मान लीजिए कि आप इन्सर्ट मोड में जाते हैं और फंक्शन लिखते हैं। आप कोडिंग जारी रख सकते हैं और अगले समारोह में जा सकते हैं लेकिन कभी-कभी सामान्य मोड में वापस जाना और फिर से मोड डालने के लिए स्विच करना बेहतर होता है। इस तरह, आप अपने कोड को एक सरल तरीके से संरचित कर सकते हैं और यदि आपको वापस जाने की आवश्यकता है तो आप जान सकते हैं कि आप किस स्थिति में समाप्त होंगे।

ध्यान दें: यदि आप तीर को हिलाने के लिए उपयोग करते हैं, तो ऐसा लगता है जैसे आपने दबाया है Esc[[ hjkl]

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