ভিম অটো-সেভ ফাইলগুলি তৈরি করা কি সম্ভব?


32

কিছু ওয়ার্ড প্রসেসর এবং টেক্সট এডিটররা আমাদের সময়ে সময়ে যে ফাইলগুলি সম্পাদনা করে সেগুলি স্বয়ংক্রিয়ভাবে সংরক্ষণ করে, যা বাজে ক্র্যাশ ইত্যাদির হাত থেকে বাঁচার জন্য খুব সুবিধাজনক etc.

একটি নির্দিষ্ট বিরতি পরে ভিএম আমাদের ফাইলগুলি স্বয়ংক্রিয়-সংরক্ষণ করার কোনও উপায় আছে?

উত্তর:


30

একটি বিল্টিন বিকল্প নেই, যদিও :help 'autosave'(টুডট.এক্সটিএস্টে) এই জাতীয় বিকল্পটি কী করতে পারে তার একটি বিবরণ উল্লেখ করে।

এটি বাস্তবায়নের একটি সম্ভাব্য উপায় CursorHoldহ'ল অটোকমন্ড ইভেন্টটি ব্যবহার করা । এই ইভেন্টটি ট্রিগার করা হয় যখন ব্যবহারকারী 'updatetime'মিলিসেকেন্ডের জন্য কোনও কী টিপেনি।

autocmd CursorHold * update

:updateযদি এটা রুপান্তরিত করা হয়েছে কমান্ড শুধুমাত্র বাফার পরিমাণ সঞ্চয় হয়। Alsoোকানো মোড সক্রিয় থাকাকালীন আপনিও যদি এটি ঘটতে চান, CursorHoldIইভেন্ট তালিকায় যোগ করা যেতে পারে।

autocmd CursorHold,CursorHoldI * update

আরেকটি বিকল্প হ'ল 'autowrite'বিকল্প, যা বাহ্যিক কমান্ড চালানোর আগে বাফারটি সংরক্ষণ করবে (চালানোর আগে সংরক্ষণের জন্য দরকারী :make) বা অন্য কোনও বাফারে স্যুইচ করতে হবে।


যদি এটি কাজ করে তবে আপনি কীভাবে লক্ষ্য করবেন?
নিলন

@ নিলন এটি সংরক্ষণ করা স্ট্যাটাস বারে মুদ্রণ করা উচিত, আপনি যেমন চাপছেন: ডাব্লু নিজেই।
MaudPieTheRocktorate

12

ভিমের একটি অটো-সেভ বৈশিষ্ট্য রয়েছে তবে এটি এটি "পুনরুদ্ধার" ফাইলটিতে সংরক্ষণ করে।

আপনি যখন কোনও দস্তাবেজ সম্পাদনা করবেন, উদাহরণস্বরূপ MyFile.txtvim পুনরুদ্ধার ফাইলটি তৈরি করবে .MyFile.txt.swp। যদি আপনার সিস্টেমটি ক্র্যাশ হয়ে থাকে বা আপনার সেশনটি মারা গিয়েছিল, তবে আপনি পুনরায় সংযোগ করতে পারেন এবং টাইপ করে আপনি যেখানে ফিরে গিয়েছিলেন সেখান থেকে পুনরুদ্ধার করতে পারেন:

vim -r MyFile.txt

এটি সম্পাদনা করার জন্য ফাইলটি খুলবে এবং আপনি এতে সর্বশেষ পরিবর্তনগুলি পুনরুদ্ধার করবেন।

তারপরে আপনি পুনরুদ্ধার করা সংস্করণটি স্বাভাবিক উপায়ে সংরক্ষণ করতে পারেন :w

দুর্ভাগ্যক্রমে, আপনি যখন ভিম থেকে প্রস্থান করবেন, তখন এটি .MyFile.txt.swpচারপাশে চলে যাবে এবং আপনাকে এটি ম্যানুয়ালি সরানো দরকার:

rm .MyFile.txt.swp

দেখুন "রিকভারি" ম্যান পৃষ্ঠা এছাড়াও অধ্যায় 11


1
যখন আপনি (সঙ্গে অর্থাত সঠিকভাবে তেজ থেকে প্রস্থান :wqবা :q!বা ZZবা ইত্যাদি), swap 'র ফাইলগুলো স্বয়ংক্রিয়ভাবে অপসারণ করা উচিত।
ডুরকনব

4
@ ডুরকনব আপনি পুনরুদ্ধারের পরে যখন বাইরে যাবেন না ... ;-)
রলফ্ল

8

আমি একটি প্লাগইন তৈরি করেছি ভিম -অটোস্যাভ যা আপনার বাফারগুলিকে পর্যায়ক্রমে সংরক্ষণ করতে টাইমারের ভিম 8 বৈশিষ্ট্য ব্যবহার করে।


ওহো, ভিম 8 প্লাগইন ইতিমধ্যে প্রকাশিত হচ্ছে। দেখতে দুর্দান্ত, খ্রিস্টান!
থিমেরা

ধন্যবাদ, খ্রিস্টান এটি আশাব্যঞ্জক মনে হচ্ছে। আমি ভাবছি যে প্লাগইনটি নতুন / সংরক্ষণিত ফাইলগুলিকে সমর্থন করে। প্লাগইন ডকুমেন্টেশনে উত্তরটি খুঁজে পাচ্ছি না। আমার কম্পিউটারটি গত রাতে পুনরায় চালু করার সিদ্ধান্ত নিয়েছে এবং আমার কাছে নতুন বাফারগুলিতে বেশ কয়েকটি দ্রুত নোট রয়েছে। ভিম swp ফাইলগুলি তৈরি বা সংরক্ষণ করে নি।
JAponte

না, বর্তমানে এটি নতুন / সংরক্ষিত ফাইলগুলিকে সমর্থন করে না। যদি আপনি এটি চান তবে এগিয়ে যান এবং একটি শ্বেতী সমস্যা তৈরি করুন।
খ্রিস্টান ব্রাব্যান্ড 18

2

প্রতিবার ফোকাস হারিয়ে গেলে আমি আমার ভিমে সমস্ত কিছু সংরক্ষণ করি।

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

1

যেমনটি অন্যেরা সূচিত করেছে, ভিমে একটি অদলবদল (.swp) রয়েছে যা আপনার আসল ফাইলটি যেখানেই তৈরি হবে তবে আপনার .vimrc ফাইলে আপনি .swp ডিরেক্টরিটি সেট করতে পারেন।

আপনাকে ডিরেক্টরিটি তৈরি করতে হবে mkdirএবং তারপরে আপনার .vimrcটিকে সেই স্থানে সেট করতে হবে।

set backup " make backup files
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp

1

তেজ-কর্মক্ষেত্র প্লাগইন মোটামুটি স্বনির্ধারিত স্বয়ংক্রিয় সংরক্ষণ বৈশিষ্ট্য যা আপনার প্রয়োজন অনুসারে হতে পারে। ডিফল্টরূপে, ওয়ার্কস্পেস সেশনে (এটির মূল বৈশিষ্ট্য) থাকাকালীন এটি অটোস্যাভ সক্ষম করে, তবে আপনি যদি ( let g:workspace_autosave_always = 1) সন্ধান করেন তবে আপনি সর্বদা এটি স্বয়ংক্রিয় সংরক্ষণে সেট করতে পারেন ।


1

যখনই পাঠ্য পরিবর্তন হবে বাফারটি সংরক্ষণ করার চেষ্টা করুন:

autocmd TextChanged,TextChangedI <buffer> silent write

এটি আমার পক্ষে কাজ করে।

সূত্র

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.