ভিম - পুনরুদ্ধারের পরে স্বয়ংক্রিয়ভাবে এসডাব্লুপি ফাইল মুছুন মূল ফাইলটি পরিবর্তন হয় না


9

যখন ভিম প্রক্রিয়াটি হঠাৎ করে বন্ধ হয়ে যায় (উদাহরণস্বরূপ সিস্টেম ক্রাশ), এটি একটি SWP ফাইল ছেড়ে দেয় leaves মূল ফাইলটি ভিমে পরে খুললে পুনরুদ্ধারের বিকল্পটি পাওয়া যায়। বেশিরভাগ সময় পুনরুদ্ধার করা ফাইলটি সেভ করা ফাইলের সমান হয় কারণ আমার প্রায়শই সংরক্ষণের অভ্যাস থাকে। তারপরে ভিম বলেছেন:

Recovery completed. Buffer contents equals file contents. 
You may want to delete the .swp file now.

ঠিক আছে, অবশ্যই আমি এখনই .swp ফাইলটি মুছতে চাই!

এই ক্ষেত্রে আমি কীভাবে বীমকে সর্বদা এসডাব্লুপি ফাইলটি স্বয়ংক্রিয়ভাবে মুছতে পারি?

এটি করার জন্য কোনও বিল্ট-ইন সেটিং নেই বলে মনে হচ্ছে, তাই আমি একটি উপযুক্ত অটোকোমন্ড ইভেন্টের সন্ধান করছি।

আমি যেভাবে খুঁজে পেয়েছি তা হল :e #বার্তাটি পরে, যার ফলে আবার অদলবদল-উপস্থিত বিকল্পগুলি প্রদর্শিত হয়, তারপরে আমি "এটি মুছুন" করতে পারি। তবে আমার প্রত্যেকবার এই অতিরিক্ত পদক্ষেপগুলি করার দরকার নেই।


ধন্যবাদ! আমি খুঁজেছি আপনার :e #কৌশলটি আদর্শ না হলেও এটি নীচের বর্তমান উত্তরের চেয়ে আরও কার্যকর। :-)
রায়লুও

উত্তর:


5

দ্রষ্টব্য: আপনি কোন অপারেটিং সিস্টেম ব্যবহার করছেন তা আপনি বলেননি। নিম্নলিখিতটি ইউনিক্স শেল নিয়ে কাজ করে তবে উইন্ডোজ চলমান থাকলে আপনি খালি-হাড়ের সাইগউইন বা অন্য কোনও শেল ডাউনলোড করতে পারেন।

আমি আপনার মত একই কাজ করতাম :e, পুনরুদ্ধার ফাইলটি মুছে ফেলার বিকল্প পেতে একই ফাইলটি পুনরায় খোলার জন্য দৌড়ান । ক্র্যাশ বা অপ্রত্যাশিত কম্পিউটার পুনঃসূচনা হওয়ার পরে, আমি vim -rঅদলবদল ফাইলগুলিতে চালিয়ে এবং পুনরুদ্ধারটি এগিয়ে দিয়ে দিয়ে সমস্ত বাকী ভিম পুনরুদ্ধার ফাইলগুলি সাফ করি ।

ফাইল পরিবর্তন করা হয়নি যখন

যদি ফাইলগুলি পরিবর্তন না হয়, আমি অবিলম্বে পুনরুদ্ধার ফাইলটি মুছতে চাই। ভীম যদি স্বয়ংক্রিয়ভাবে এটি করতে পারে তবে এটি দুর্দান্ত হবে তবে দুর্ভাগ্যক্রমে, এটি হয় না।

ফাইলগুলি যখন পরিবর্তিত হয়

যদি ফাইলগুলি পরিবর্তন হয়ে থাকে তবে আমি DiffOrigআসল এবং পুনরুদ্ধারকৃত সংস্করণগুলির মধ্যে পার্থক্য তুলনা করতে কমান্ডটি চালিত করি । আমি যদি পুনরুদ্ধার ফাইল থেকে আসা পরিবর্তনগুলি নিয়ে সন্তুষ্ট হন তবে :xকমান্ডটি দিয়ে ফাইলগুলি সংরক্ষণ করে আমি প্রস্থান করি । যদি তা না হয় তবে আমি ছেড়ে দিয়ে পুনরুদ্ধার করা পরিবর্তনগুলি বাতিল করে দিই :q!। যদি পুনরুদ্ধার ফাইলটি কোনও সংরক্ষিত ফাইলের সাথে সম্পর্কিত না হয়, উদাহরণস্বরূপ .swp, আমি সাধারণত :w filenameএকটি ফাইলের নাম সহ একটি ফাইলে পুনরুদ্ধার করা বাফারটি সংরক্ষণ করতে ব্যবহার করি ।

ডিফোরাইগ সহায়ক

আমি আমার সাথে ডিফরাইগ কমান্ড যুক্ত করেছি .vimrcযাতে এটি সর্বদা উপলব্ধ থাকে।

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis

শেল লিপি

আমি বর্তমান ডিরেক্টরি ট্রিটিতে প্রতিটি সোয়াপ-ফাইল সন্ধান করতে আমার শেলটিতে নিম্নলিখিত স্ক্রিপ্টটি চালিত করি। তারপরে প্রতিটি সোয়াপ-ফাইল ভিমটিকে "পুনরুদ্ধার মোডে" খুলতে ব্যবহার করা হয় এবং ভিম বন্ধ হওয়ার পরে মুছে ফেলা হয়।

find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;

rm -iবিকল্প নিশ্চিতকরণ (প্রয়োজন yফাইল মুছে ফেলতে)। আপনি যদি আরও আত্মবিশ্বাসী হন এবং প্রক্রিয়াটি দ্রুত করতে চান তবে এটি বাদ দেওয়া যেতে পারে।

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