আমি কীভাবে ফাইলগুলির ফোল্ডার জুড়ে কোনও ফাংশন বা ম্যাক্রো চালাতে পারি?


12

ধরা যাক আমার নামক একটি ফাংশন আছে StripWhitespace

আমি ফাইলটি ওপেন করে চালিয়ে একটি একক ফাইলে এটি চালাতে পারি :StripWhitespace

আমি কীভাবে ফাইলের ফোল্ডারের বিরুদ্ধে সেই ফাংশনটি স্বয়ংক্রিয়ভাবে চালাতে পারি এবং ফলাফলগুলি চালিয়ে যেতে পারি?


3
বিস্তারিত, দয়া করে!
200_সুকেস

উত্তর:


10

আপনি -cআর্গুমেন্টটি শুরুতে একটি কমান্ড চালাতে ব্যবহার করতে পারেন , এ থেকে vim(1):

   -c {command}
               {command} will be executed after the first  file  has  been
               read.   {command}  is interpreted as an Ex command.  If the
               {command} contains spaces it must  be  enclosed  in  double
               quotes  (this depends on the shell that is used).  Example:
               Vim "+set si" main.c
               Note: You can use up to 10 "+" or "-c" commands.

উদাহরণ:

vim -c ':call StripWhitespace()' file1 file2

পরে ছাড়তে, যুক্ত করুন | :wqa:

vim -c ':call StripWhitespace() | :wqa' file1 file2

1
আপনি একটি চান: আরগোডো, আপনি যদি কমান্ডলাইনে বেশ কয়েকটি ফাইলের জন্য এটি
চালান

19

আপনি যদি ইতিমধ্যে ভিমে থাকেন তবে আপনি যথাক্রমে যুক্তি তালিকা বা বাফার তালিকার প্রতিটি আইটেমের উপর একটি কমান্ড কার্যকর করতে :argdoবা :bufdoআদেশগুলি ব্যবহার করতে পারেন ।

যেমন :আর্গুমেন্ট তালিকার প্রতিটি ফাইলে একটি কমান্ড চালানো :

:argdo StripWhitespace

বাফার তালিকার প্রতিটি ফাইল থেকে একটি ফাংশন চাওয়ার জন্য:

:bufdo call StripWhitespace()

বা qআর্গুমেন্ট তালিকার প্রতিটি ফাইলে ম্যাক্রো চালাতে :

:argdo normal @q

তারপরে আপনি সমস্ত পরিবর্তিত বাফার দিয়ে সংরক্ষণ করতে পারেন :wall, বা সমস্ত সংরক্ষণ করতে এবং এর সাথে ভিম ছেড়ে যেতে পারেন :wqall

আপনি পাশাপাশি যাওয়ার সাথে সাথে ফাইলগুলি লিখতে চান, আপনি :updateযাতে কল করতে পারেন তেমন :

:argdo s/foo/bar/ge | update

ভিমের কাছে ফাইলগুলি প্রথম স্থানে আনার বিভিন্ন উপায় রয়েছে যার মধ্যে রয়েছে:

  • ভিএম কমান্ড লাইনে প্যারামিটার সরবরাহ করুন: vim *(এটি যুক্তি তালিকায় সমস্ত ফাইল যুক্ত করে),
  • :argsআর্গুমেন্ট তালিকাটি জনপ্রিয় করতে কমান্ডটি (যা ওয়াইল্ডকার্ডস এবং ব্যাকটিক এক্সপ্রেশন সমর্থন করে) ব্যবহার করুন বা এতে :argaddফাইল যুক্ত করার জন্য আদেশটি,
  • শুধু তাদের সকলের ম্যানুয়ালি ওপেন :e, :Ex, অথবা একটি ফাইল-খোলার প্লাগইন।

1
আমি এই উত্তরটি পছন্দ করি কারণ এর জন্য ভিম ছাড়ার দরকার নেই, যা আমার মতে অত্যন্ত ব্যয়বহুল (আমার মূল্যবান বাফার তালিকা!)। আমার কয়েকটি নোট রয়েছে: (1) বাফার ছাড়াই লেখার জন্য 'hidden'সেট করা দরকার ; (২) : updateকমান্ডটি সামান্য উন্নতি হ'ল :wকারণ এটি কেবল তখনই লিখিত হয় যদি কোনও পরিবর্তন করা হয়েছে, তাই :bufdo updateবা :argdo updateসমস্ত পরিবর্তিত বাফার বা যুক্তি লিখবে।
tommcdo

ভাল পয়েন্ট update। আমি hiddenউত্তরটি লিখতে গিয়ে উল্লেখ করার বিষয়টি বিবেচনা করেছি, তবে এর বিপরীতে সিদ্ধান্ত নিয়েছি কারণ আমি এটিকে অত্যধিক জটিল করতে চাইনি। প্রতিবিম্বে যদিও এটি থাকা উচিত। আমি উভয় পরামর্শ অন্তর্ভুক্ত করার জন্য উত্তর আপডেট করব।
ধনী

@ টমমকডো কেবলমাত্র দেয়ালের জন্য ডকুমেন্টেশনগুলি পরীক্ষা করেছেন: এবং এটি কেবল পরিবর্তিত বাফারগুলিকেই লেখেন, সুতরাং: বুফডো আপডেটের পরেও প্রয়োজনীয় নয়।
ধনী

সম্পর্কিত ভাল ক্যাচ :wall, এতে বাফারগুলির মাধ্যমে সাইকেল চালানো এবং আপনি যেখান থেকে শুরু করেছিলেন সেখান থেকে আপনাকে দূরে সরিয়ে নিয়ে যাওয়ার সুবিধা রয়েছে। আমি মনে করি :argdo updateএখনও একটি আলাদা গল্প - সম্ভবত আপনি বাফারগুলিতে লিখতে চান না যা আপনার যুক্তির তালিকায় নেই।
tommcdo

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