जवाबों:
एक अंतर्निहित विकल्प नहीं है, हालांकि :help 'autosave'
(indo.txt में) इस बात का वर्णन है कि ऐसा विकल्प क्या कर सकता है।
इसे लागू करने का एक संभावित तरीका CursorHold
ऑटोकॉमैंड इवेंट का उपयोग करना है । जब उपयोगकर्ता 'updatetime'
मिलीसेकंड के लिए कुंजी नहीं दबाता है तो यह घटना शुरू हो जाती है ।
autocmd CursorHold * update
:update
अगर यह संशोधित किया गया है आदेश केवल बफर बचाता है। यदि आप यह भी चाहते हैं कि आवेषण मोड सक्रिय होने के दौरान CursorHoldI
घटना सूची में जोड़ा जा सके।
autocmd CursorHold,CursorHoldI * update
एक अन्य विकल्प एक विकल्प है 'autowrite'
, जो बाहरी कमांड को निष्पादित करने से पहले बफर को बचाएगा (चलने से पहले बचत के लिए उपयोगी :make
) या एक अलग बफर में स्विच करना।
विम में एक ऑटो-सेव फीचर है, लेकिन यह इसे "रिकवरी" फाइल में सेव करता है।
जब आप किसी दस्तावेज़ को संपादित करते हैं, जैसे कि MyFile.txt
विम रिवाइज फाइल बनाएगा .MyFile.txt.swp
। यदि आपका सिस्टम क्रैश करने के लिए था, या आपका सत्र मरने वाला था, तो आप पुन: कनेक्ट कर सकते हैं, और अनिवार्य रूप से ठीक हो सकते हैं जहां आपने छोड़ा था, निम्नलिखित द्वारा:
vim -r MyFile.txt
यह संपादन के लिए फ़ाइल खोल देगा, और आपके द्वारा किए गए अंतिम परिवर्तनों को पुनर्प्राप्त करेगा।
फिर आप पुनर्प्राप्त संस्करण को सामान्य तरीके से सहेज सकते हैं :w
।
दुर्भाग्य से, जब आप विम से बाहर निकलते हैं, तो यह .MyFile.txt.swp
चारों ओर निकल जाएगा , और आपको इसे मैन्युअल रूप से निकालने की आवश्यकता है:
rm .MyFile.txt.swp
देखें "वसूली" मैन पेज भी अध्याय 11
:wq
या :q!
या ZZ
या आदि के साथ), स्वैप फाइलें अपने आप ही हटा दी जानी चाहिए।
मैंने एक प्लगइन vim-autosave बनाया जो समय-समय पर अपने बफ़र्स को बचाने के लिए टाइमर की विम 8 सुविधा का उपयोग करता है।
मैं अपना वीम हर बार फ़ोकस खो जाने पर बचा लेता हूँ।
autocmd FocusLost <your-patterns-here> silent! wall
मेरे पैटर्न बहुत लंबे हैं और मैं उन्हें कई ऑटोकैड में उपयोग करता हूं लेकिन पूर्णता के लिए यह ऐसा दिखता है:
if exists(':keeppatterns')
let s:keeppatterns = 'keeppatterns '
else
let s:keeppatterns = ''
endif
augroup AutoSaveGroup
" :help file-pattern has some info,
" but some of it is is buried in the PATTERNS section of usr_40.txt
let s:autoPattern = "*.{c,h,[ch]pp,[acjt]s,inl,cg,cgfx,fx,py,bat,cmd,jam,vim,yml,yaml,vsprops,erb,rb,html,htm},SCons*,*vimrc"
autocmd!
execute "autocmd FocusLost" s:autoPattern "silent! wall"
execute "autocmd BufWritePre" s:autoPattern s:keeppatterns . 'call FixFormatting(expand("<afile>"))'
execute "autocmd FileChangedRO" s:autoPattern "silent !p4 edit %:p"
execute "autocmd FileChangedRO" s:autoPattern "write!"
autocmd FocusLost *.txt silent! wall
augroup END
जैसा कि दूसरों ने संकेत दिया है, विम के पास एक स्वैप फ़ाइल (.swp) है जो कि कभी आपकी मूल फ़ाइल बनाई जाएगी, लेकिन आपकी .vimrc फ़ाइल में, आप .swp निर्देशिका सेट कर सकते हैं।
आपको निर्देशिका बनाना होगा mkdir
और फिर अपना .vimrc उस स्थान पर सेट करना होगा।
set backup " make backup files
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
Vim-कार्यक्षेत्र प्लगइन एक काफी अनुकूलन ऑटो को बचाने विशेषता यह है कि आपकी आवश्यकताओं के अनुरूप है। डिफ़ॉल्ट रूप से, यह एक कार्यक्षेत्र सत्र (इसकी मुख्य विशेषता) में ऑटोसैव को सक्षम करता है, लेकिन आप इसे हमेशा ऑटोसैव पर सेट कर सकते हैं यदि यह सब आप ( let g:workspace_autosave_always = 1
) के लिए देख रहे हैं ।
जब भी पाठ बदला जाए तो बफर को सहेजने का प्रयास करें:
autocmd TextChanged,TextChangedI <buffer> silent write
यह मेरे लिए काम करता है।