विम से बाहर निकलने पर: wq <cr>: x <cr> और ZZ में क्या अंतर हैं?


38

वीआई और विम, जैसा कि आप सभी जानते हैं, कई पर्यायवाची शब्द हैं। फ़ाइल को सहेजने और विम और वीआई से बाहर निकलने के तीन तरीके हैं। ये हैं : wq <करोड़> , : एक्स <करोड़> और जेडजेड । मैंने सुना है कि ये किसी तरह से अलग हैं।

क्या उपयोग करने के बीच कोई व्यावहारिक अंतर हैं:

:x<cr>

:wq<cr>

या

ZZ

फ़ाइल को बचाने और Vim और Vi से बाहर निकलने के लिए?


सरल उत्तर: वे समान हैं।
जोजो

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

1
इसके अलावा, व्यावहारिक दृष्टिकोण से, ZZ(या ZQ) टाइप करने के लिए छोटा और आसान है ...
VanLaser

:help :wq, :help ZZ, :help :x। यह डॉक्स में वहीं है।
एंटनी

जवाबों:


40

विम के प्रलेखन से, :xऔर ZZसमकक्ष हैं; वे केवल फ़ाइल को सहेजते हैं यदि इसे संशोधित किया गया है, तो विम को छोड़ दें:

Write current file, if modified, and quit (same as ":x").  
(Note: If there are several windows for the
current file, the file is written if it was modified and the window is closed).

:wq दूसरी तरफ फ़ाइल लिखता है और विम (उचित अनुमतियाँ मानकर) छोड़ देता है।


9

के रूप में अक्षय ने कहा, विम के दस्तावेज़ बताते हैं, कि :xऔर ZZबराबर हैं और केवल एक फ़ाइल यदि संबद्ध बफर बदल दिया गया है को बचाने कर रहे हैं। जबकि :wqबफर को संबंधित फ़ाइल में सहेजा जाता है, भले ही यह अपरिवर्तित हो।

दोनों मामलों में, बफर की सामग्री को डिस्क पर सहेजा जाएगा। जाहिर है कि परिणाम एक ही है, तो परेशान क्यों है, है ना? लेकिन रुको ... एक सूक्ष्म है, लेकिन अप्रासंगिक अंतर नहीं है।

यदि आप Vim से बाहर निकलते हैं :xऔर बफर में कोई परिवर्तन नहीं हुआ है, तो उस फ़ाइल के संशोधन समय में कोई परिवर्तन नहीं होगा। दूसरी ओर, यदि आप के माध्यम से छोड़ दिया :wq, संशोधन समय बदल जाएगा, क्योंकि फ़ाइल तकनीकी रूप से फिर से लिखा गया है (फिर से बचाया गया)।

इससे कुछ स्थितियों में कुछ प्रभाव पड़ सकता है। उदाहरण के लिए एक बैकअप प्रक्रिया जो संशोधन के समय पर निर्भर है, इस फ़ाइल को संग्रहीत कर सकती है (और संभवतः इसे नेटवर्क पर भेज सकती है) भले ही कोई अतिरिक्त जानकारी शामिल नहीं की गई हो। या कुछ निगरानी प्रक्रिया एक अलार्म बज सकता है अगर यह पता लगाता है कि (इसके लिए) फ़ाइल बदल दी गई है ...

संपादित करें: मैं संशोधित समय / बदलाव के बिना एक संशोधित बफर / फ़ाइल को छोड़ने के लिए उल्लेख करना भूल गया, :q(बिना w) काम करेगा।


2
इसके अलावा, कुछ ऑटोकॉमैंड केवल तभी चलेंगे जब फ़ाइल लिखी जाएगी। यदि फ़ाइल नहीं बदली गई है तो वे नहीं चलेंगे और VZ को ZZ या: x के साथ छोड़ दिया जाएगा।
स्पाइडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.