.Swp ফাইল থাকা কোনও ফাইল খোলার সময় সতর্কতা থেকে কীভাবে মুক্তি পাবেন?


46

আমি যখন একটি .swp ফাইল থাকা ফাইল খুলি তখন কীভাবে বিরক্তিকর সতর্কতাগুলি থেকে মুক্তি পেতে পারি? বা, আমি কীভাবে .swp ফাইলগুলি একেবারে তৈরি করতে পারি না? উদাহরণ সতর্কতা:

E325: ATTENTION
Found a swap file by the name ".notes.swp"
          owned by: james   dated: Fri Dec  3 17:38:07 2010
         file name: ~james/school/se/project-dir/rottencucumber/doc/notes
          modified: no
         user name: james   host name: james-laptop
        process ID: 2251 (still running)
While opening file "notes"
             dated: Fri Dec  3 18:46:10 2010
      NEWER than swap file!

(1) Another program may be editing the same file.
    If this is the case, be careful not to end up with two
    different instances of the same file when making changes.
    Quit, or continue with caution.

(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r notes"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".notes.swp"
    to avoid this message.

Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:

উত্তর:


44

আপনি যদি সম্ভাব্যভাবে সংরক্ষণ না করে পাঠ্যটি না হারানোর বিষয়ে চিন্তা করেন তবে এই বার্তাটি আসলে বেশ গুরুত্বপূর্ণ । এটি করা উচিত নয় বিরক্তিকর বিবেচনা করা, এবং উচিত না আপনি তড়িঘড়ি swap 'র ফাইল বা কনফিগার মুছে ফেলতে কারণ vimএটা ছাড়া চালানোর জন্য।

আপনি সম্পাদনা করার সময় vimযে কোনও ফাইলের সম্পাদনা করার সময় এটি সম্পর্কিত স্ব্যাপ ফাইল থাকবে যা vimপরিবর্তনের উপর নজর রাখতে পারে। আপনি যখন কোনও ফাইল সম্পাদনা করা ছেড়ে vimদিবেন, তখন স্বয়ংক্রিয়ভাবে সম্পর্কিত সোয়াপ ফাইলটি বাতিল হয়ে যাবে। অতএব, অদলবদলের অস্তিত্ব এবং মূল ফাইলটি উপরে লেখার আপনার প্রচেষ্টা বিবেচনা এবং যথাযথ ব্যবস্থা গ্রহণের কারণ হতে হবে।

( E325: ATTENTION Found a swap file) বার্তায় উপস্থাপিত দুটি পরিস্থিতি আসলে বেশ সাধারণ: (1) হয় অন্য কোনও vimপ্রোগ্রাম আপনি যে একই ফাইলটি সম্পাদনা করার চেষ্টা করছেন সেটি সম্পাদনা করছে (এটি আসলে অন্য একজন ব্যক্তি হতে পারে - এক্ষেত্রে এটি সত্যিকার অর্থে বোঝায় না অদলবদল করে অদলবদল ফাইল মুছতে - অথবা এটি অন্য টার্মিনাল উইন্ডো বা ট্যাবে আপনি হতে পারেন), বা (২) পূর্ববর্তী vimসেশনটি ক্র্যাশ হয়ে গেছে (প্রায়শই এটি ঘটে যখন আপনি দূরবর্তী সম্পাদনা করছেন, এবং নেটওয়ার্ক সেশনটি বিচ্ছিন্ন হয়ে যায় - এতে যদি ভিএম সেশনটি স্বাভাবিকভাবে উপস্থিত হয় না, এবং .swpফাইলটি পিছনে থাকে; এই দ্বিতীয় দৃশ্যের আরেকটি উদাহরণ হ'ল আপনি দুর্ঘটনাক্রমে একটি সক্রিয় বা পটভূমি vimসেশনযুক্ত টার্মিনাল উইন্ডো বা ট্যাবটি বন্ধ করে দিয়েছেন )।

আমি যখন এই বার্তাটির মুখোমুখি হই তখন আমি প্রথমে চিন্তা করি যে আমি এই ফাইলটি অন্য টার্মিনাল উইন্ডো বা ট্যাবে সম্পাদনা করছি কিনা, কারণ আমি সাধারণত বেশ কয়েকটি টার্মিনাল উইন্ডোতে বেশ কয়েকটি ট্যাব সহ পরিচালনা করি:

এখানে চিত্র বর্ণনা লিখুন

যদি আমি বুঝতে পারি যে আমি অন্য কোনও জায়গায় সম্পাদনা করছি, এবং এটিতে ফিরে আসতে পারি তবে আমি এই অতিরিক্ত অধিবেশনটির qকীটি টিপুন (Q)uitএবং মূল vimসেশনের মাধ্যমে সম্পাদনাতে ফিরে আসব ।

কখনও কখনও যদি আমি পুরোপুরি নিশ্চিত না হয়ে থাকি (Q)uitতবে আমি এবং তারপরে jobsআমি vimঠিক একই টার্মিনালে চালাচ্ছি কিনা তা যাচাই করতে দৌড়ে যাই ; যদি কিছু না আসে তবে আমি অন্য কোথাও চলছি ps -ef | grep vimকিনা তা পরীক্ষা করতে দৌড়ে এসেছি vim(যেমন অন্য একটি টার্মিনাল উইন্ডো বা ট্যাবে)। মুল বক্তব্যটি হ'ল আমি সর্বদা মূল vimঅধিবেশনটি দিয়ে সম্পাদনা পুনরায় শুরু করার চেষ্টা করি ।


যদি আমি নিশ্চিত যে আমি মূল সম্পাদনা সেশনের আর আসতে পারবেন না, এবং আমি এখনও নিম্নলিখিত অপশন সঙ্গে উপস্থাপন করছি, তারপর আমি চাপুন rকরতে (R)ecover

Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:

টিপুন r, আপনি এই মত একটি বার্তা দেখতে পাবেন:

Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.

Press ENTER or type command to continue

অন্যদিকে, আমি যদি এখন আর সেই বিকল্পগুলির মুখোমুখি না হই, কারণ আমি শেল প্রম্পটে আছি, তবে আমি বিকল্পটি vimদিয়ে চালিয়ে যাচ্ছি -r:

vim -r notes

ফলাফল বার্তা অনুরূপ হবে:

Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.

Press ENTER or type command to continue

যেভাবেই হোক, ENTERচালিয়ে যেতে টিপুন এবং আপনি নিজের ফাইলটি দেখতে পাবেন।

দ্রষ্টব্য: যদি ভিমের সন্ধান পেয়েছে সে সম্পর্কে সন্দেহ থাকে তবে এটি একটি ত্রুটি বার্তা দেবে এবং "???" দিয়ে লাইনগুলি সন্নিবেশ করবে লেখার ভিতর. যদি আপনি পুনরুদ্ধার করার সময় একটি ত্রুটি বার্তা দেখতে পান তবে "???" ফাইলটি অনুসন্ধান করুন কি ভুল তা দেখতে। আপনার প্রয়োজনীয় পাঠ্যটি কেটে পেস্ট করতে পারেন।

সর্বাধিক সাধারণ মন্তব্যটি হ'ল "??? লাইন মিসিং"। এর অর্থ হ'ল ভিম মূল ফাইলটি থেকে পাঠ্যটি পড়তে পারে না। সিস্টেমটি ক্র্যাশ হয়ে গেলে এবং মূল ফাইলের কিছু অংশ সংরক্ষণ না করা হলে এটি ঘটতে পারে।

এটি বলেছিল, আমি ???এই চিহ্নগুলি কখনই দেখিনি , সুতরাং এটি অবশ্যই সত্যই বিরল ঘটনা।


এরপরে, অন্য ফাইলে বিষয়বস্তু সংরক্ষণ করুন (অর্থাত্ লিখুন) (সাধারণত আমি মূল ফাইলের শেষে "2" সংযুক্ত করি):

:w notes2

এরপরে, এই vimঅধিবেশনটি জোর করে ছেড়ে দিন :

:q!

এরপরে, দুটি ফাইলের তুলনা করুন:

diff notes notes2

যদি diffকিছু কিছু না ফেরায় , তার অর্থ কোনও পার্থক্য নেই এবং অদলবদল ফাইল এবং দ্বিতীয় ফাইল উভয়ই সরিয়ে ফেলা নিরাপদ:

rm .notes.swp notes2

এই মুহুর্তে, আসল ফাইলটি খুলুন এবং এগিয়ে যান যেমন কোনও সমস্যা হয়নি:

vim notes

যদি diffকিছু ফেরত দেয় , তার অর্থ আসল ফাইলের (সোয়াপ ফাইলের মাধ্যমে) পরিবর্তন হয়েছিল যা পুনরুদ্ধার করার জন্য ধন্যবাদ, দ্বিতীয় ফাইলটিতে সংরক্ষণ করা হয়েছে।

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

rm .notes.swp
remove .notes.swp? y

mv notes2 notes
overwrite notes? (y/n [n]) y

এই মুহুর্তে, আসল ফাইলটি খুলুন এবং এগিয়ে যান যেমন কোনও সমস্যা হয়নি:

vim notes

এটি অনেকটা কাজের মতো মনে হয়, তবে আপনি একবার ওয়ার্কফ্লোতে অভ্যস্ত হয়ে গেলে সর্বোচ্চ 20 সেকেন্ডের মতো লাগে।


2
বিশ্বাস করা যায় না এটি গৃহীত উত্তর নয়। এইটা ঠিক আছে. +1
ডেভিড

গৃহীত উত্তরের চেয়ে অনেক ভাল। ইচ্ছে করে আমাদের এটিকে সম্বোধন করার উপায় ছিল!
মাইকেল ডুরান্ট

1
বার্তাটি দরকারী যে এটি সবসময় হয় না। আমি যদি কোনও ফাইল সম্পাদনা করছি তবে আমি সম্পাদনা শুরু করার পরে ফাইলটি পরিবর্তিত হয়েছে কিনা সেদিকে খেয়াল রাখছি, এই মুহুর্তে আমি এটি সংরক্ষণ করার চেষ্টা করছি, আমি অন্য ভিএম উইন্ডোতেও সম্পাদনা করছি কিনা তা নয়। আমার পক্ষে দুটি টার্মিনালে একটি ফাইল খোলার পক্ষে এটি পুরোপুরি ঠিক আছে, যতক্ষণ না ফাইলটি সংরক্ষণ করা হয় তা ইন্টারলিভ না করে। আমি যখন সংরক্ষণ করার চেষ্টা করি তখনই ভিমকে কেবল সত্যই আমাকে টানতে হবে, যখন আমি এটি খুলি না।
কেন সাইমন

দুর্ভাগ্যক্রমে এটি প্রশ্নের উত্তর দেয় না, এটি কেবলমাত্র বলে যে আমার নাগ পর্দা উপেক্ষা করা উচিত নয়। আমার পরিস্থিতিটি হ'ল আমি ইতিমধ্যে ভিএম ফাইলটি সম্পাদনা করতে পেরেছি (সম্পাদনার জন্য, সম্ভবত), একই সাথে একই সাথে ফাইলের বিভিন্ন অংশ দেখতে চাই এবং বিভক্ত বাফারগুলি চাই না কারণ ঝনঝন_পম্পূর্ণ বাফারগুলির আকার পরিবর্তন করে চলেছে । এই ক্ষেত্রে, আমি আসলে ভিমে কীভাবে পঠনযোগ্যভাবে একটি ফাইল খুলতে হয় তা জানতে চাই এবং এটি স্যুপ ফাইলটি উপেক্ষা করতে চাই।
লেলানথ্রান

@ লেলানথ্রানvim -n file_name
ব্যবহারকারী 664833

19

আটকানো বার্তাটি পরামর্শ দেয় যে আপনার এখনও অন্য ভিম সেশনে "নোটগুলি" ফাইলটি খোলা আছে। অন্য কোথাও সম্পাদনা করা কোনও ফাইল সম্পাদনা করা অবশ্যই ভাল ধারণা নয়।

যদি সেই বার্তাটি ভুল হয় তবে আপনার ভিম সেশনটি কীভাবে ভুলভাবে বেরিয়েছে তা নির্ধারণ করতে হবে এবং ভবিষ্যতে তা এড়ানো উচিত।

পুনরুদ্ধারের ক্ষেত্রে, এটি এই ক্ষেত্রে একটি সমস্যা হতে পারে যেহেতু "নোটগুলি" এর সাথে সম্পর্কিত Vim .swp ফাইলের চেয়ে নতুন তবে আপনি এখনও চেষ্টা করতে পারেন। কেবলমাত্র আপনার "নোটগুলি" ফাইলটি প্রথমে কোনও ব্যাকআপ স্থানে অনুলিপি করার বিষয়টি নিশ্চিত করুন।

" :help recover.txt" এর মাধ্যমে পড়া ভাল ধারণা হবে ।

এখানে পাঠ্যটি হ'ল আপনি এই বার্তাটি দেখছেন বলে মনে করা হচ্ছে না, এবং আপনি কিছু বোঝাতে চেয়েছিলেন কোথাও ভুল হয়েছে। এটি (সম্ভবত) ভিমের দোষ নয়।

আপনি যদি এখনও এই মুহুর্তে ভিমকে .swp ফাইলগুলি তৈরি না করতে বলেন তবে আপনি ক্র্যাশ এবং অন্যান্য সম্পর্কিত সমস্যাগুলি থেকে পুনরুদ্ধার করতে পারেন তবে আপনি এটি " set noswapfile" রাখতে পারেন ~/.vimrc


1
সাবধান হও! ভিআইএম-এর সাথে জগাখিচু হয়ে আমার প্রায় সমস্ত কাজ আমি হারিয়ে ফেলেছি। আপনি কিছু চেষ্টা করার আগে আপনার কোডটি অনুলিপি করুন।
কাঠবিড়ালি

আমি পাঠকদের দৃ strongly়ভাবে ব্যবহারকারী 664833 দ্বারা উত্তরটি পর্যালোচনা করার পরামর্শ দিচ্ছি ( এই বার্তাটি আসলে বেশ গুরুত্বপূর্ণ ... ) যেহেতু আমি মনে করি এটি আরও ভাল তথ্য এবং পরামর্শ দেয় যে এই উত্তরটি ইমো
মাইকেল ডুরান্ট

11

আপনি swapfile ব্যবহার না করে vim খুলতে -n ব্যবহার করতে পারেন :

এটি সর্বদা করতে, কেবল লিখুন

alias vim='vim -n' 

আপনার .bashrc বা .bash_aliases ফাইলে

আপনার যদি কখনও -n বিকল্প ব্যতীত ভিএম চালানোর প্রয়োজন হয় তবে কেবল চালান

\vim

3
আমি সবসময় কোনও সোয়াপ ফাইল ছাড়াই চলার পরামর্শ দেব না, তবে "-n" আসলে আমার যা প্রয়োজন তা হ'ল। আমি সাধারণত একটি সোয়াপ ফাইল ব্যবহার করি use যাইহোক, ভিমকে ডিফ ডিভাইস হিসাবে ব্যবহার করার সময়, আমি সম্পাদনা করতে চাইলে আমি যে বার্তাটি সম্পাদনা করছি সেগুলি ছাড়াই বা আমার অদলবদল ফাইলের সাথে হস্তক্ষেপ না করে আমি সম্পাদনা করছি of
এজেন্টলিয়ান

1
আমি এই উত্তরটি পছন্দ করি - এটি সংক্ষিপ্ত, এটি সঠিক এবং এটি আসল প্রশ্নের উত্তর দেয়!
লেলানথ্রান

2

আপনি যখন সঠিকভাবে প্রস্থান করবেন তখন ভিএম উত্পাদিত .swp ফাইলটি সরিয়ে ফেলবে।


1

আমি যখন একটি .swp ফাইল থাকা ফাইল খুলি তখন কীভাবে বিরক্তিকর সতর্কতাগুলি থেকে মুক্তি পেতে পারি?

আপনার মধ্যে সংক্ষিপ্ত বার্তা বিকল্পটি ব্যবহার করুন ~/.vimrc:

set shortmess=A

যা পসিক্স মোড চলাকালীন ডিফল্ট।

তবে এটি করবেন না : এটি জ্বালানীর দক্ষতা বাড়ানোর জন্য আপনার গাড়ির এয়ার ব্যাগগুলি সরিয়ে দেওয়ার মতো। দীর্ঘমেয়াদে, আপনি প্রশ্নের উত্তর দেওয়ার চেয়ে পুনরুদ্ধারে আরও বেশি সময় ব্যয় করবেন।


1
একক ব্যবহারকারী সিস্টেম হিসাবে ধরে নেওয়া, এটি কোনও কনফিগারেশনের মতো ভয়াবহ নয়। আমি প্রচুর টার্মিনাল ট্যাবগুলি খুলতে চাই এবং কখনও কখনও আমি এমন কোনও ফাইল সম্পাদনা করতে চাই যা আমি ইতিমধ্যে অন্য কোনও ট্যাবে রেখেছি। আমি যদি কয়েকটি দ্রুত সম্পাদনা করতে চাই তবে তা ঠিক আছে। আমি যদি নিজেকে অন্যান্য তেজ উইন্ডোতে ফিরে এটি, সৌন্দর্য এটি আমাকে সতর্ক পাবেন তারপর যে ফাইল এটা সংরক্ষণ আমি আগে পরিবর্তিত হয়েছে, এবং আমি একটি দ্রুত কি করতে পারেন :e(একটি দ্রুত সহ তা দেখতে ঘটেছিল uপূর্বাবস্থা ফিরে কি আমি বাফারে ছিলাম I) ইতিমধ্যে কোনও ফাইল খোলার বিষয়ে আমাকে ঝাঁকুনির চেয়ে অনেক বেশি ভাল লাগে।
কেন সাইমন

1

আমার টার্মিনালটি অপ্রত্যাশিতভাবে আমার vi সংযোগের সাথে সংযোগ বন্ধ করার সময় আমার সাথে এটি ঘটেছিল।

ধন্যবাদ আমি কোনও পরিবর্তন হারিয়েছি।

সেই সতর্কতাটি সরাতে এবং সোয়াপটি বাতিল করতে:

  1. প্রক্রিয়া আইডি খুঁজছেন এটি সন্ধান করুন, এক্ষেত্রেprocess ID: 2251 (still running) এটি 2251
  2. আপনি সঠিক আইডি পেয়েছেন তা যাচাই করুনps 2251
  3. ব্যবহার করে প্রক্রিয়াটি মেরে ফেলুনkill 2251

এবং এটাই.

মনে রাখবেন যে অদলবদিত ফাইলগুলি আপনাকে রক্ষা করতে পারে এবং এগুলি সম্পূর্ণরূপে অক্ষম করা উচিত নয়।


তবে vi(m)প্রক্রিয়া না থাকলে কী হবে ?
স্কট

-2

আমি তিনটি সহজ পদক্ষেপে এই সমস্যাটি সমাধান করেছি:

1 :) "ls -la" চালান যেখানে ফাইলটি উপস্থিত থাকে যাতে আপনি একই জন্য .swp ফাইলটি দেখতে পারেন।

2 :) এখন "rm -i * .swp" অর্থাৎ ডিরেক্টরি থেকে ".swp" ফাইলটি সরান remove

3 :) এখন নিশ্চিত করুন যে ".swp" ফাইলটি সরানো হয়েছে।

4 :) এখন এই সতর্কতা থেকে উপভোগ করুন।


3
বিশ্বে কেন আপনি rm -rfকোনও ফাইল সরানোর পরামর্শ দিবেন ? আমি -rfআরও বুদ্ধিমানের সাথে প্রতিস্থাপন করেছি-i
নিফেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.