VIM स्वैप-फ़ाइल सर्वोत्तम अभ्यास?


14

हर बार जब मैं अपने कनेक्शन को खो कर विम में एक सत्र से बाहर हो जाता हूं, तो मैं ड्र्रेड से भर जाता हूं (और फिर भी मैं वीआईएम का उपयोग करना जारी रखता हूं ... मुझे एक मसोचिस्ट क्या होना चाहिए) क्योंकि जब मैं अपनी फाइलों को फिर से खोलता हूं तो स्वैप का ढेर- फ़ाइलें मेरे काम को नष्ट करने पर एक शॉट लेने के लिए इंतजार कर रहे हैं। विम स्वैप फ़ाइलों के साथ काम करने के लिए सर्वोत्तम अभ्यास क्या हैं? क्या आप अभी सबसे नया चुनते हैं? यदि फ़ाइल आपके द्वारा अपेक्षित तरीके से काम करती है, तो क्या आप बस स्वैप फ़ाइलों को हटाते हैं? आप इनसे कैसे छुटकारा पाते हैं?


5
आपके काम की सुरक्षा के लिए स्वैप फाइलें हैं। ग्नू स्क्रीन का उपयोग करने पर विचार करें।

1
मैं कार्यक्षमता को बंद नहीं करना चाहता; यह कष्टप्रद है लेकिन जब आप उपयोगी होते हैं।
leeand00

1
मैं सिर्फ यह जानना चाहता हूं कि इसका सही इस्तेमाल कैसे किया जाए।
leeand00

2
@DrEval मैं
बजे

2
यदि आप tmux का उपयोग करते हैं, तो आपको अपना कनेक्शन खोने के बारे में चिंता करने की आवश्यकता नहीं होनी चाहिए: जब आप पुन: कनेक्ट करते हैं, तो अपने सत्र को फिर से लिखें। आपको mosh और @ ChristianBrabandt के पुनर्प्राप्त प्लगइन में भी रुचि हो सकती है ।
रिच

जवाबों:


24

दहशत नहीं!

फ़ाइलों को पुनर्प्राप्त करना हमेशा सुरक्षित होता है, क्योंकि विम कभी भी कोई बदलाव नहीं लिखते हैं जब तक आप उन्हें खुद नहीं लिखते हैं। तो एक स्वैप फ़ाइल से उबरने और फिर बचत के बिना बंद करने से कुछ भी नहीं बदलेगा।

अपने स्वैपफिल का आयोजन करें:

अपने सभी स्वैप फ़ाइलों को एक ही स्थान पर रखने के लिए vim प्राप्त करें, ताकि आप हमेशा यह जान सकें कि वे कहाँ हैं:

set directory^=$HOME/.vim/swap//

या जहाँ भी आप चाहें। का प्रयोग करें //फ़ाइल नाम के अंत में तो तुम नाम टकराव नहीं मिलता स्वैप फ़ाइल नाम के लिए पूर्ण फ़ाइल पथ का उपयोग vim बनाता है। सुनिश्चित करें कि निर्देशिका मौजूद है, या विम इसका उपयोग नहीं करेगा (यह आपके लिए इसे नहीं बनाएगा)।

ध्यान दें: यह केवल पर्यावरण चर पर काम करता है, यदि आप एक विस्मार्क चर का उपयोग करना चाहते हैं तो हमें कुछ :executeजादू का उपयोग करने की आवश्यकता है :

execute "set directory^=".my_vim_home_var."/swap//"

मतभेदों को दूर करें:

विम की मदद इस स्थिति में उपयोग करने के लिए एक बहुत ही उपयोगी कमांड का सुझाव देती है :DiffOrig:। यह एक डिफ़ॉल्ट विम कमांड नहीं है , इसलिए :h :DiffOrigअपने vimrc से कार्यान्वयन को कॉपी करें । (यह भी $VIMRUNTIME/defaults.vimअगर तुम vim8 है) अब, आप फ़ाइल को पुनर्प्राप्त कर सकते हैं और अनमॉडिफाइड संस्करण से जो भी बदला है, उसे प्राप्त करने के लिए डिफाइरिग चला सकते हैं।

यदि आप कई स्वैप फ़ाइलों की सामग्री की तुलना करना चाहते हैं, तो अपनी फ़ाइल को प्रत्येक अलग स्वैप फ़ाइल से पुनर्प्राप्त करें और फिर अस्थायी फ़ाइलों के लिए परिणाम लिखें। अब फ़ाइलों को लोड करें और :diffthisप्रत्येक फ़ाइल पर चलाएं , आप जो चाहें बदलाव करें, मूल फ़ाइल पर वापस लिखें और अस्थायी और स्वैप फ़ाइलों को हटा दें।

उपयोगी आदेश:

:swapname: vim नाम का उपयोग करें वर्तमान बफर के लिए स्वैप फ़ाइल के लिए उपयोग कर रहा है ( :h :swapname) :recover: चयनित फ़ाइल पुनर्प्राप्त करता है, जब आप vim और प्रेस शुरू करते हैं R( :h :recover)

मदद देखें:

: विम एक पूरी वसूली पर उपयोगकर्ता के मैनुअल की धारा है :usr_11.txt
: स्वैप फाइलों पर विम के संदर्भ मदद :h swap-file, h recovery
(स्वैप फ़ाइल स्थान की स्थापना के लिए) निर्देशिका विकल्प पर सहायता::h 'directory'

संपादित करें: निर्देशिका की सेटिंग के लिए संशोधित उदाहरण, जैसा कि @B परत द्वारा टिप्पणियों में बताया गया है


जब आप कई स्वैप फ़ाइलों के साथ समाप्त होते हैं तो क्या होता है? कई गिराए गए कनेक्शनों के कारण?
leeand00

1
मैंने उल्लेख किया कि "डिफ द डिफरेंक्सेस" के दूसरे पैराग्राफ में। आपके द्वारा उपयोग किए जाने के बाद यह निर्धारित करने के लिए कि आपके द्वारा बनाई गई सभी अस्थायी फ़ाइलों और पुरानी स्वैप फ़ाइलों को हटाना चाहते हैं (अब आप जानते हैं कि सभी स्वैप फाइलें कहाँ हैं)।
१४:५

1
FYI करें, आपको उपयोग करने की आवश्यकता नहीं है exec... set directory^=$HOME/.vim/swap//तब तक ठीक काम करता है जब तक कि $HOMEएक आरंभीकृत पर्यावरण चर है। देखते हैं :h expand-env। इसके अलावा के साथ काम करता dictionary, undodirहै, और backupdirकुछ नाम हैं।
बी लेयर

मुझे उस बारे में याद दिलाने के लिए धन्यवाद! मैं अपने कॉन्फ़िगरेशन में एक विम्सस्क्रिप्ट चर का उपयोग करता हूं इसके बजाय, इसलिए निष्पादित और भूल गए पर्यावरण चर की आवश्यकता नहीं है। इसके बारे में सोचकर, मुझे शायद केवल एक पर्यावरण चर स्थापित करने के लिए विम का उपयोग करना चाहिए।
4

2

व्यक्तिगत रूप से, मैंने स्वैप और बैकअप फ़ाइलों को बंद कर दिया है, क्योंकि यह हर जगह स्वैप फ़ाइलों और बैकअप फ़ाइलों को बनाने के लिए जाता है और अक्सर टकराव पैदा करता है। विम का लगातार-पूर्ववत बहुत अधिक विश्वसनीय और त्रुटि मुक्त रहा है।

विम वर्तमान में निरंतर पूर्ववत है, इसकी बैकअप की एक बहुत अधिक बारीक विधि है। हर बार, आप दबाते हैं Esc, फ़ाइल की वर्तमान स्थिति कैप्चर की जाती है।

आप अपने पूर्ववत इतिहास को ब्राउज़ करने के लिए गुंडो , या पूर्व -वृक्ष:undolist जैसे प्लगइन्स का उपयोग या उपयोग कर सकते हैं ।

इस तरह विम का उपयोग करने के लिए:

  • एक निर्देशिका बनाएं जहां आप प्रत्येक फ़ाइल के लिए इतिहास संपादित कर रहे हैं
  • उस निर्देशिका का उपयोग करने के लिए विम को बताएं
  • लगातार पूर्ववत सक्षम करें

खोल में:

mkdir ~/.vim/undodir

विम में

set undodir=~/.vim/undodir
set undofile

स्वैप फ़ाइलें बंद करने के लिए: :set noswapfile


1
इस उत्तर के साथ बहुत बड़ी समस्याएं हैं। 1. निरंतर पूर्ववत एक अलग समस्या हल करने के लिए फ़ाइलें स्वैप (और 'writebackup'अभी तक एक और समस्या पते)। यदि आपका कंप्यूटर क्रैश हो जाए तो लगातार पूर्ववत रहने से मदद नहीं मिलेगी। आप तर्क दे सकते हैं कि स्वैप फाइलें अन्य कारणों (आधुनिक ओएस स्थिरता, यूपीएस के अस्तित्व) के लिए अनावश्यक हैं, लेकिन आपने इस उत्तर में ऐसा नहीं किया है। 2. सेटिंग लगातार पूर्ववत सक्षम 'undodir' नहीं करता है ! आप स्थापित करने की आवश्यकता 'undofile'इस बात के लिए
रिच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.