यह संदेश वास्तव में बहुत महत्वपूर्ण है यदि आप पाठ नहीं खोने के बारे में परवाह करते हैं जो आपने संभवतः नहीं बचाया है। इसे कष्टप्रद नहीं माना जाना चाहिए, और इसके कारण आपको स्वैप फ़ाइल को जल्दबाजी में हटाना नहीं चाहिए या vim
इसके बिना चलने के लिए कॉन्फ़िगर करना चाहिए।
आपके द्वारा संपादित की गई किसी भी फ़ाइल में आपके द्वारा संपादित करते समयvim
एक संबंधित स्वैप फ़ाइल होगी , जो परिवर्तनों का ट्रैक रखने के लिए उपयोग करती है। जब आप किसी फ़ाइल का संपादन करना छोड़ देते हैं, तो स्वचालित रूप से संबंधित स्वैप फ़ाइल को छोड़ देगा। इसलिए, स्वैप फ़ाइल का अस्तित्व, और मूल फ़ाइल को ओवरटॉप लिखने का आपका प्रयास, विचार और उचित कार्रवाई का कारण होना चाहिए।vim
vim
संदेश में प्रस्तुत दो परिदृश्य ( E325: ATTENTION Found a swap file
) वास्तव में काफी सामान्य हैं: (1) या तो एक और vim
प्रोग्राम संपादित कर रहा है उसी फ़ाइल को संपादित करने की कोशिश कर रहे हैं (यह वास्तव में एक और व्यक्ति हो सकता है - जिस स्थिति में यह वास्तव में समझ में नहीं आएगा। बस स्वैप फ़ाइल को नेत्रहीन रूप से हटाने के लिए - या यह आपको किसी अन्य टर्मिनल विंडो या टैब में हो सकता है), या (2) पिछला vim
सत्र क्रैश हो गया (अधिकतर ऐसा तब होता है जब आप दूरस्थ रूप से संपादन कर रहे होते हैं, और नेटवर्क सत्र समाप्त हो जाता है - जिसमें यदि विम सत्र को सामान्य रूप से बाहर नहीं किया गया था, और .swp
फ़ाइल पीछे रहती है, तो इस दूसरे परिदृश्य का एक और उदाहरण यह है कि आपने गलती से टर्मिनल विंडो या टैब को बंद कर दिया था जिसमें एक सक्रिय या पृष्ठभूमि वाला vim
सत्र था)।
जब मैं इस संदेश का सामना करता हूं, तो मैं पहले इस बारे में सोचता हूं कि क्या मैं इस फाइल को किसी अन्य टर्मिनल विंडो या टैब में संपादित कर रहा हूं, क्योंकि मैं सामान्य रूप से प्रत्येक टर्मिनल को कई टैब के साथ संचालित करता हूं:
अगर मुझे पता चलता है कि मैं किसी अन्य स्थान पर संपादन कर रहा हूं, और उसमें वापस आ सकता हूं, तो मैं इस अतिरिक्त सत्र की q
कुंजी दबाता हूं (Q)uit
, और मूल vim
सत्र के माध्यम से संपादन पर लौटता हूं ।
कभी-कभी अगर मुझे पूरी तरह से यकीन नहीं है, (Q)uit
तो jobs
मैं यह सत्यापित करने के लिए दौड़ता हूं कि क्या मैं vim
ठीक उसी टर्मिनल में चल रहा हूं ; अगर कुछ नहीं आता है, तो मैं ps -ef | grep vim
यह जांचने के लिए दौड़ता हूं कि क्या मैं vim
कहीं और चल रहा हूं (यानी किसी अन्य टर्मिनल विंडो या टैब में)। मुद्दा यह है, मैं हमेशा मूल vim
सत्र के माध्यम से संपादन फिर से शुरू करने की कोशिश करता हूं ।
तो मुझे विश्वास है कि मैं मूल संपादन सत्र में नहीं लौट सकते, और मैं अभी भी इन विकल्पों के साथ प्रस्तुत कर रहा हूँ, तो मैं प्रेस r
करने के लिए (R)ecover
।
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
दबाने पर r
, आप इस तरह एक संदेश देखेंगे:
Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
यदि, दूसरी ओर, मुझे अब उन विकल्पों का सामना नहीं करना पड़ता है, क्योंकि मैं शेल प्रॉम्प्ट में हूं, तो मैं विकल्प के vim
साथ चलता हूं -r
, निम्नानुसार है:
vim -r notes
परिणामी संदेश समान होगा:
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
किसी भी तरह, ENTER
जारी रखने के लिए दबाएं , और आप अपनी फ़ाइल देखेंगे।
नोट: अगर विम को इस बारे में संदेह है कि यह क्या मिला, तो यह एक त्रुटि संदेश देगा और "???" के साथ लाइनें सम्मिलित करेगा। लिखित मे। यदि आप पुनर्प्राप्त करते समय कोई त्रुटि संदेश देखते हैं, तो "???" के लिए फ़ाइल में खोजें। क्या गलत है देखने के लिए। आप जिस पाठ को चाहते हैं उसे प्राप्त करने के लिए कट और पेस्ट करना चाह सकते हैं।
सबसे आम टिप्पणी है "??? LINES MISSING"। इसका मतलब है कि विम मूल फ़ाइल से पाठ नहीं पढ़ सकता है। यह तब हो सकता है जब सिस्टम क्रैश हो गया और मूल फ़ाइल के कुछ हिस्सों को बचाया नहीं गया।
उस ने कहा, मैंने कभी उन ???
निशानों को नहीं देखा है, इसलिए यह वास्तव में दुर्लभ घटना होनी चाहिए ।
इसके बाद, सेव (यानी राइट) के लिए सामग्री को किसी अन्य फ़ाइल (आमतौर पर मैं सिर्फ संलग्न "2" मूल फ़ाइल नाम के अंत में):
:w notes2
अगला, इस vim
सत्र को बलपूर्वक छोड़ें :
:q!
अगला, दो फाइलों की तुलना करें:
diff notes notes2
यदि diff
रिटर्न कुछ भी नहीं है , तो इसका मतलब है कि कोई अंतर नहीं है, और यह स्वैप फाइल और दूसरी फाइल को हटाने के लिए सुरक्षित है:
rm .notes.swp notes2
इस बिंदु पर, मूल फ़ाइल खोलें और आगे बढ़ें जैसे कि कोई समस्या नहीं थी:
vim notes
यदि diff
रिटर्न कुछ है , तो इसका मतलब है कि मूल फ़ाइल (स्वैप फ़ाइल के माध्यम से) में परिवर्तन थे, जो पुनर्प्राप्त करने के लिए धन्यवाद, दूसरी फ़ाइल में सहेजे गए हैं।
चूंकि उन परिवर्तनों को दूसरी फ़ाइल में कैप्चर किया गया है, आप स्वैप फ़ाइल को हटाने के लिए सुरक्षित हैं और मूल फ़ाइल को दूसरे के साथ अधिलेखित कर रहे हैं:
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
इस बिंदु पर, मूल फ़ाइल खोलें और आगे बढ़ें जैसे कि कोई समस्या नहीं थी:
vim notes
यह बहुत काम की तरह लगता है, लेकिन एक बार जब आप वर्कफ़्लो की आदत डाल लेते हैं तो यह अधिकतम 20 सेकंड की तरह होता है।