আমি কীভাবে বর্তমান ফাইলটি ভিমে মুছে ফেলতে পারি?


85

আমি কীভাবে ডিস্ক থেকে বর্তমান ওপেন ফাইলটি ভিএম এর মধ্যে থেকে মুছতে পারি? বাফারটি বন্ধ করেও ভাল লাগবে।

আমি দেখতে পাচ্ছি যে আপনি এর জন্য NERDTree ব্যবহার করতে পারেন , তবে আমি এই প্লাগইনটি ব্যবহার করি না।

উত্তর:


102

বাহ্যিক সরঞ্জাম যেমন rm (1) ব্যবহার করা ভাল, তবে delete()ফাইলগুলি মোছার জন্য ভিমের নিজস্ব কার্যকারিতাও রয়েছে। এটি পোর্টেবল হওয়ার সুবিধা রয়েছে।

:call delete(expand('%'))

এটি প্রকাশ করার একটি বিকল্প উপায় হ'ল :call delete(@%)এটি %(বর্তমান ফাইল) নিবন্ধক (@ অ্যাকোলেড দ্বারা টিপ) ব্যবহার করে।

বর্তমান বাফারকে পুরোপুরি শুদ্ধ করার জন্য, ডিস্কে ফাইল উপস্থাপনা এবং ভিম বাফার উভয়ই যুক্ত করুন :bdelete:

:call delete(expand('%')) | bdelete!

আপনি সম্ভবত আপনার পছন্দ অনুযায়ী এটি মানচিত্র করতে চাইবেন।


7
ধন্যবাদ! .Vimrc নিম্নলিখিত মানচিত্র কাজ বলে মনে হয়: nnoremap rm :call delete(expand('%')) \| bdelete!<CR>। আপনি আপনার উত্তরে যুক্ত করতে চাইতে পারেন।
fotanus

13
এই ম্যাপিং আদর্শ নয়। আমরা rকমান্ড ভাঙতে চাই না ! আপনার ম্যাপিং এর সাথে আরও ভাল উপসর্গ <Leader>...
ফ্লাইটগুলি

4
আমি এটি ব্যবহার করে Ctrl + Del এ ম্যাপ করেছি nnoremap <C-Del> :call delete(expand('%'))<CR>তবে দুর্ঘটনাক্রমে ঘটলে বাফারটি আমি বন্ধ করি না; তাহলে আপনার এখনও এটি সংরক্ষণ করার সুযোগ রয়েছে।
এভেজেনি সার্জিভ

4
:call delete(@%)|q!← সংক্ষিপ্ত রূপটি (আপনি যদি এটি মানচিত্র করতে না চান)। (বাফারটি রয়ে গেছে :lsএবং এইভাবে পুনরুদ্ধার করা যেতে পারে :b; এটি ফাইলের নাম এবং বাফার অপশন বজায় রাখে, তবে ফাইল সামগ্রী নয়))
অ্যারন থোমা

4
@accolade, আমি আপনার কৌতুক মত, কিন্তু আপনি ব্যবহার করতে হবে :call delete(@%)|bd!এবং ব্যবহার :ls!সঙ্গে :bপুনরুজ্জীবিত করার।
বার্ট লুয়র্স

88

কটাক্ষপাত একটি তেজ আদেশের সঙ্গে মুছে ফেলুন ফাইলমন্তব্য বিভাগে আপনার জন্য খুঁজছেন তা থাকতে হবে:

মূলত, আরএম বর্তমান ফাইলটি মুছবে; আরএম বর্তমান ফাইলটি মুছে ফেলবে এবং একসাথে বাফারটি (সংরক্ষণ না করে) ছাড়বে।

বিকল্পভাবে, আপনি বর্তমান ফাইলটি সরাতে কেবল শেল কমান্ড জারি করতে পারেন:

:!rm %

4
এটি এত সহজ কিছু যে আমি প্রায় বিশ্বাস করতে পারি না যে এর জন্য আমার একটি স্ক্রিপ্ট তৈরি করা দরকার। ধন্যবাদ
fotanus

4
মুছে ফেলতে !rm %, যখন ভিফ আবার বাফারে ফিরে আসে তখন কি সতর্কতা এড়ানোর কোনও উপায় আছে?
fotanus

4
ফাইলের নামের কিছু বিশেষ অক্ষর সহ, এই কমান্ডটি কাজ করবে না, যেমন যদি ফাইলটির নাম 20130711-পরিচিতিগুলি # 285.vcf হয়, যার স্পেস থাকে, তবে এটি বলে যে 'rm: 30 20130711- পরিচিতি' সরাতে পারে না: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি '
Saeed

4
@ saeed144, একটি ফাইলের নাম (অথবা অন্যান্য অক্ষরগুলি আপনি শেল পর্যায়ে ব্যাখ্যা চাই না) এ জায়গার ক্ষেত্রে, আপনি ফাইলের নাম (ঘিরে চাইবেন %উদ্ধৃতি সহ): !rm "%"
ডেভিড কেইন

8
ডেটা হাজার্ড সতর্কতা! (পরম ফাইলপথ) এর পরিবর্তে স্রেফ %(ফাইলপ্যাথ ( ভিআইএম টার্মিনোলজিতে " ফাইলের নাম ") হিসাবে, প্রকৃত %:pফাইলপ্যাথের পরিবর্তে আপনি অন্য নামের ডিরেক্টরিতে একই নামের একটি ফাইল মুছে ফেলার সামান্য ঝুঁকি নিয়ে চালান, আপনি যদি ভুলে গিয়ে থাকেন তবে :cdসেখানে। অতএব আমি দৃ strongly়রূপে এটির %:pপরিবর্তে %আপনি যদি এটিকে মানচিত্র করেন তবে তা ব্যবহার করার পরামর্শ দিচ্ছি ।
অ্যারন থোমা

25

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

নিজস্ব ভাষায় নপুংস.ভিম সরবরাহ করে

ইউনিক্স শেল কমান্ডগুলির জন্য সর্বাধিক প্রয়োজন শিম কমান্ড sugar একই সাথে একটি বাফার এবং অন্তর্নিহিত ফাইলটি মুছুন বা নামকরণ করুন। কুইকফিক্স তালিকায় একটি findবা একটি লোড করুন locate। ইত্যাদি।

পারফেক্ট এটি আমাদের যা প্রয়োজন তা রয়েছে, এবং আমরা যদি ইউনিক্স সিস্টেমে থাকি তবে কিছু অতিরিক্ত সরঞ্জাম থাকে।

আপনি যে আদেশটি সন্ধান করছেন তা হ'ল

:Remove!

আবার, এটি remap যদি আপনি এটি অনেক প্রয়োজন, যেমন :nnoremap <Leader>rm :Remove!<CR>


আমি প্লাগিন ছাড়াই করার উপায় খুঁজছিলাম, তাই আমি আপনার অন্যান্য উত্তর গ্রহণ করব। প্লাগইনটি দুর্দান্ত দেখাচ্ছে :-)
ফোটানাস

যদি তোমাদের মধ্যে তেজ উপায়ে প্রয়োজন এই প্লাগ চমত্কার সুবিধাজনক mv, mkdir, find, ইত্যাদি অত্যন্ত সুপারিশ।
এহতেশ চৌধুরী

5

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

এগুলি একসাথে রেখে আমি আমার সাথে একটি ফাংশন যুক্ত করেছি ~/.vimrc, যা ফাইলটি মুছতে এবং বাফারটি বন্ধ করার আগে অনুরোধ করে এবং এটি একটি মূল সংমিশ্রণে ম্যাপ করে:

nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()

fun! DeleteFileAndCloseBuffer()
  let choice = confirm("Delete file and close buffer?", "&Do it!\n&Nonono", 1)
  if choice == 1 | call delete(expand('%:p')) | q! | endif
endfun

আপনি যদি আমার চেয়ে কম প্যারানয়েডের একটি কীস্ট্রোক <CR>হন তবে আপনি প্রথম লাইনে যুক্ত করতে পারেন

nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()<CR>

এবং কেবল একবার রিটার্ন চাপতে হবে।


4
আপনি যখনই যাইহোক স্ক্রিপ্ট করবেন তার expand('%:p')পরিবর্তে আমি @%দৃ strongly়তার সাথে ব্যবহার করার পরামর্শ দিচ্ছি । (আমি যখন চাটুড হয়েছি যে আপনি আমার ইঙ্গিতটি অন্তর্ভুক্ত করেছেন :) ব্রেভিটি সুবিধা কোনও স্ক্রিপ্টে প্রান্তিক। আরও গুরুত্বপূর্ণ:) %:pফাইলের নামটি সম্পূর্ণ পরম পথে প্রসারিত করবে (যা এটি ইতিমধ্যে হতে পারে বা নাও হতে পারে)। কেবলমাত্র %আপনি পরিবর্তে অন্য ডিরেক্টরিতে একই নামের একটি ফাইল মুছে ফেলার সামান্য ঝুঁকি নিয়ে চালান, যদি আপনি :cdসেখানে এডটি ভুলে গিয়ে থাকেন তবে।
অ্যারন থোমা 5'16

4
যে pionting জন্য ধন্যবাদ! আমি সেই অনুযায়ী আমার উত্তর আপডেট করেছি।
joelostblom

0

আপনি দুটি পদক্ষেপের সাহায্যে এটি করতে পারেন:

  1. একটি নতুন ফাইল হিসাবে সংরক্ষণ করুন

    : w newfilename

  2. পুরানো ফাইল মুছুন

    ! আরএম ওল্ডফিলাম


0

এটি একটি অজনপ্রিয় মতামত হতে পারে তবে আপনার ফাইল ট্রি এক্সপ্লোরার (নেট্র / নের্ডট্রি) কোনও ফাইল মুছে ফেলার সহজ এবং নিরাপদ উপায় হতে চলেছে। এমনকি যদি ওপি NerdTree ব্যবহার না করে তবে অন্তর্নির্মিত প্লাগইন নেট্রও ঠিক তেমন কাজ করবে।

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