मैं अंडोफाइल का उपयोग कैसे कर सकता हूं?


36

Vim.org पर अंतिम समाचार आइटम एक रिबूट के बाद भी अपने इतिहास और पूर्ववत परिवर्तनों को बचाने के लिए 'अनडॉफाइल' का उपयोग करने के बारे में बात करता है:

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

मैं इस सुविधा को कैसे सक्षम और उपयोग कर सकता हूं?


जवाबों:


37

सबसे सरल संस्करण है: ~/.vim/undo-dir/निर्देशिका बनाएं और निम्नलिखित को इसमें जोड़ें .vimrc:

set undodir=~/.vim/undo-dir
set undofile

हालांकि, यह निर्दोष नहीं है, और इस पर पढ़ना बेहतर है। मेरे अपने से .vimrc:

" Let's save undo info!
if !isdirectory($HOME."/.vim")
    call mkdir($HOME."/.vim", "", 0770)
endif
if !isdirectory($HOME."/.vim/undo-dir")
    call mkdir($HOME."/.vim/undo-dir", "", 0700)
endif
set undodir=~/.vim/undo-dir
set undofile

मैं पूर्ववत फ़ाइलों के साथ यादृच्छिक निर्देशिकाओं को अव्यवस्थित नहीं करना पसंद करता हूं। तो मैंने undodirविकल्प सेट किया , जो उन सभी को एक पूर्ववत निर्देशिका में रखता है। वह एक समस्या छोड़ देता है - मैं आलसी हूं, और मेरे सभी मशीनों पर उस निर्देशिका को बनाने का मन नहीं करता (मैं मशीनों के .vimrcएक समूह में अपने सिंक करने के लिए एक संस्करण नियंत्रण प्रणाली का उपयोग करता हूं )। शुक्र है, अगर वे मौजूद नहीं हैं तो निर्देशिका की जांच करना और निर्देशिका बनाना काफी आसान है।

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

अंत में, सिस्टम टेम्परेरी डायरेक्टरी नहीं बन रहा है, सिस्टम टेम्पराइल क्लीनअप पॉलिसी के अधीन नहीं है। अक्सर, यह एक सप्ताह या तो काफी कम है। लेकिन इसे हमेशा के लिए बढ़ने से रोकने के लिए, मैंने निम्नलिखित बातों को अपने में रखा crontab:

# m h  dom mon dow   command
 43 00 *   *   3     find /home/anthony/.vim/undo-dir -type f -mtime +90 -delete

इसलिए 90 दिनों के बाद संशोधित नहीं होने पर, वे हटा दिए गए हैं। (ईमानदारी से, वे वास्तव में इतने बड़े नहीं हैं, आप उन्हें आसानी से हमेशा के लिए छोड़ सकते हैं कि डिस्क कितनी सस्ती है। लेकिन अपनी खुद की गोपनीयता पर भी विचार करें कि क्या आपकी मशीन कभी समझौता कर रही है।)


विस्तृत उत्तर @derobert के लिए धन्यवाद! मुझे पता है कि यह एक पुराना सवाल है, लेकिन मैं पुरानी vim पूर्ववत फ़ाइलों ( vi.stackexchange.com/questions/16053/… ) को हटाने के एक vimscript तरीके के साथ आने की कोशिश कर रहा हूं । मुझे लगता है कि यह इस तरह से क्लीनर करना होगा, लेकिन यह आसान नहीं साबित हो रहा है। क्या आपने कभी पुरानी विम फ़ाइलों को हटाने के लिए एक विस्मार्क का उपयोग करने के बारे में सोचा था? यदि नहीं, तो क्या आप अभी भी एक वैंपस्क्रिप्ट पर क्रॉस्टैब का उपयोग करेंगे?
लोगन

1
@Logan एक vim स्क्रिप्ट का उपयोग केवल तभी काम करेगा जब vim चल रहा हो, और यह भी कि अगर कई vim चल रहे हों तो क्या होगा? यह क्रोन लाइन सरल है, उन समस्याओं से ग्रस्त नहीं है, और स्पष्ट रूप से सही है ...
derobert

ऐसा लगता है कि mkdir()फ़ंक्शन पैरामीटर के "p"लिए विकल्प के साथ कई निर्देशिका संरचना बनाने का समर्थन करता है {path}। तो उपरोक्त स्क्रिप्ट को थोड़ा सरल किया जा सकता है। call mkdir($HOME."/.vim/undo-dir", "p", 0700)कम से कम 7.4.160 में मेरे लिए काम का उपयोग करना ।
जेडो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.