একটি প্রকল্পের মধ্যে সমস্ত দরকারী ফাইল অনুসন্ধান করার সহজ উপায় কী?


28

বর্তমান প্রকল্পের সমস্ত ফাইল সামগ্রীতে একটি regexp অনুসন্ধান করার সহজ উপায় কী, যেগুলি দরকারী নয় সেই ফাইলগুলি এড়িয়ে চলে?

অকেজো ফাইলগুলি হ'ল সংকলিত ফাইল, আমদানি করা লাইব্রেরি, সংস্করণ-নিয়ন্ত্রণ ফাইল ইত্যাদি things

আমি সচেতন rgrep, কিন্তু এটি কেবল সমস্ত কিছু অনুসন্ধান করে। এমন কোনও প্যাকেজ রয়েছে যা 'স্বাচ্ছন্দ্যে' অনুসন্ধান করে এবং বিভিন্ন প্রোগ্রামিং ল্যাঙ্গুয়েজ সম্পর্কে জানত তাই প্রতিটি পৃথক প্রকল্পের জন্য আমাকে এটির কনফিগার করতে হবে না?


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

উত্তর:


32

এ গিয়ে Emacs মধ্যে প্রকল্প ভিত্তিক অনুসন্ধান ব্যবহার করা যাবে প্রজেক্ট

এটি প্রতি প্রকল্পের কনফিগারেশনের জন্য ফাইলগুলিকে উপেক্ষা করুন (কোনও <projectroot>\.projectileফাইলের মধ্যে), বা অন্য সমস্তকে পর্যবেক্ষণ ও উপেক্ষা করার জন্য সাব-ডিরেক্টরিগুলি নির্দিষ্ট করে।

এটা তোলে চালাতে পারেন grep, ack(প্রয়োজন ack-and-a-half.el) এবং ag( ag.el) সংজ্ঞায়িত প্রকল্পের মধ্যে ফাইল (হয় উপর ভিত্তি করে .projectileফাইল বা একটি প্রকল্প রুট নির্ধারণ করতে একটি সমর্থিত ভিসি ফাইল খোঁজার দ্বারা)।

দরকারী কমান্ড

(দরকারী ফাইলগুলির মাধ্যমে অনুসন্ধানের ক্ষেত্রে)

প্রজেক্টাইল রেডমে অনুযায়ী

  • C-c p s g :: grepপ্রকল্পের ফাইলগুলিতে চালান ।
  • C-c p s a :: ackপ্রকল্পে চলছে। এসি-এবং-দেড়টির উপস্থিতি প্রয়োজন।
  • C-c p s s :: agপ্রকল্পে চলছে। Ag.el. এর উপস্থিতি প্রয়োজন
  • C-c p f :: প্রকল্পের সমস্ত ফাইলের একটি তালিকা প্রদর্শন করুন।
  • C-c p d :: প্রকল্পে সমস্ত ডিরেক্টরি একটি তালিকা প্রদর্শন করুন।
  • C-c p a :: একই নামে ফাইলের মধ্যে স্যুইচ করুন তবে প্রকল্পে বিভিন্ন এক্সটেনশন।
  • C-c p o:: multi-occurবর্তমানে উন্মুক্ত সমস্ত প্রকল্প বাফারে চলছে।

এগুলি কেবলমাত্র প্রকল্পের অংশ হিসাবে সংজ্ঞায়িত ফাইলগুলিতে কাজ করবে (বা যখন ক্যাশে উত্পন্ন / পুনঃজেনারেটেড হয় তখন পাওয়া যায়)।


ধন্যবাদ, আমি প্রজেক্টাইল কমান্ডটি কি এর জন্য ব্যবহার করতে পারি?
মালবারবা

কমান্ডগুলির একটি উপসেট অন্তর্ভুক্ত করার জন্য এটি সম্পাদনা করা হয়েছে (যারা অনুসন্ধান, ফাইন্ড-ফাইল এবং ডায়ার্ডের সাথে ডিল করছেন)। সম্পূর্ণ তালিকা প্যাকেজ রিডমে রয়েছে।
জোনাথন লেচ-পেপিন

13

কেবলমাত্র প্রাসঙ্গিক ফাইলগুলির প্রজেক্ট- agব্যাপৃত অনুসন্ধানটি উرف দ্য_সিলভার_সন্ধানী ব্যবহার করে করা যেতে পারে ।

এগ কেন?

  • এটা আপনার থেকে ফাইল নিদর্শন উপেক্ষা করে .gitignore, .hgignore, svn:ignoreআপনি সন্ধানটি -Uস্যুইচ ব্যবহার করে সংস্করণ-নিয়ন্ত্রণ উপেক্ষা তালিকা থেকে উপেক্ষা তালিকাটি ব্যবহার না করার জন্য বেছে নিতে পারেন।
  • যদি আপনার সোর্স রেপোতে এমন কোনও ফাইল থাকে যা আপনি সন্ধান করতে চান না, কেবল একটি .agignoreফাইলে তাদের নিদর্শনগুলি যুক্ত করুন।
    • আপনার মধ্যে একটি গ্লোবাল .agignoreফাইল স্থাপন করা যেতে পারে $HOMEএবং তারপরে আপনি আরও বেশি প্রকল্পের নির্দিষ্ট .agignoreফাইলগুলি আপনার প্রকল্পের মূলগুলিতে রাখতে পারেন।

সেট আপ agএবং ইম্যাকস

  • আপনার সিস্টেমে agওরফে the_silver_searcher ইনস্টল করুন ।
  • .agignoreফাইল সেট আপ করুন। আমি .agignoreআমার মধ্যে একটি গ্লোবাল ফাইল থাকতে পছন্দ করি $HOME
  • agপ্যাকেজটি ইনস্টল করুন (মেলপাতে উপলব্ধ)।
  • এরপরে আপনি প্রকল্প-ব্যাপী ফাইল অনুসন্ধান করতে ag-projectবা ag-project-regexpফাংশন (যা agপ্যাকেজটির সাথে আসে ) ব্যবহার করতে পারেন।
    • ডিফল্টরূপে, এই ফাংশন VCS রুট ব্যবহার ডিরেক্টরির মধ্যে অনুসন্ধান করতে যেমন রেপো। আপনি সেটিং বা কাস্টমাইজ দ্বারা এই নির্দেশটি বাতিল করতে পারে ag-project-root-function
    • এমনকি যদি আপনার প্রকল্পটি গিট নিয়ন্ত্রিত না হয় তবে আপনি আপনার প্রকল্পের মূলটিতে একটি ফাঁকা ফোল্ডার রেখে ag-project/ ag-project-regexpভিত্তিক অনুসন্ধানগুলির জন্য একটি প্রকল্প-রুট চিহ্নিত করতে পারেন .git। তারপরে আপনাকে কাস্টমাইজ করতে হবে না ag-project-root-function

4

যদি আপনার প্রকল্পটি গিট ব্যবহার করে তবে আপনার কেবল https://github.com/abo-abo/swiper দরকারcounsel

  • counsel-git ফাইল সন্ধান করতে

  • counsel-git-grep গ্রেপ করা

একমাত্র নির্ভরতা গিট

পাঠ্য গ্রেপিং রৌপ্য অনুসন্ধানকারী (এগ্রি) থেকে দ্রুত

পরামর্শ অন্যান্য শক্তিশালী সরঞ্জামও সরবরাহ করে। উদাহরণস্বরূপ, দৌড়ানোর পরে counsel-git-grep, আপনি চাপতে পারেন C-c C-oএবং প্রজেক্টের স্কোপে সহজেই টেক্সটটি প্রতিস্থাপন C-x C-qকরতে যেতে wgrep-modeপারেন।

এখানে একটি নিবন্ধ আছে https://sam217pa.github.io/2016/09/11/nuclear-power-editing-via-ivy-and-ag/ বিশদ বিবরণ দিয়ে। এই নিবন্ধটি counsel-ag(পরামর্শ হিসাবে নির্মিত অন্য কমান্ড) cousnel-git-grepব্যবহার করে তবে ঠিক একই কাজের প্রবাহ ব্যবহার করে।


কিন্তু পাঠ্য-গ্রেপিং এজি এর চেয়ে দ্রুততর কীভাবে আসে? আপনি দয়া করে বিস্তারিত বলতে পারেন?
অস্বীকার 631

1
agএকটি গ্রেপ প্রোগ্রাম, মত git-grep। কোনটি দ্রুত তা বলতে পারি না। Github.com/BurntSushi/ripgrep দেখুন যা জনপ্রিয় গ্রেপ প্রোগ্রামগুলির পারফরম্যান্সের ( agএবং সহ git-grep) তুলনা করে
চেন বিন

1

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

এটি .emacs.d এ প্যাকেজটি ইনস্টল করে এবং আপনার $ USER ডিরেক্টরিতে .emacs- তে কিছু বেসিক কনফিগারেশন যুক্ত করেছে (ধরে নিই যে আপনি .emacs ফাইলটি তৈরি করেছেন) যেমন আপনার Emacs ইনস্টলে প্রজেক্টাইল প্রয়োজন।

তবে আপনাকে এখনও এটি সক্ষম করতে হবে এবং কী-ম্যাপের উপসর্গগুলি যুক্ত করতে হবে, যাতে আপনি এটি মিনি বাফারে আবেদন করতে পারেন।

গৃহীত উত্তরে নিম্নলিখিত আদেশের উল্লেখ রয়েছে:

C-c p s g

আপনি যদি এই কীম্যাপ উপসর্গ দিয়ে প্রজেক্টটি কনফিগার না করেন তবে এটি কাজ করবে না। তবে আমি এটিকে .emacs এ প্রজেক্টের কমান্ড হিসাবে সিসি সিপি ব্যবহার করতে কনফিগার করেছি:

(projectile-mode +1)
(define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map)

এখন এটি দেওয়া হয়েছে, আমি গ্রাইপ ব্যবহার করে কোনও প্রকল্পের ফাইলগুলিতে পাঠ্য অনুসন্ধান করতে সক্ষম হয়েছি:

C-c C-p f # switch to a project first
C-c C-p s g # perform grep search in project

এটি ভেঙে ফেলার জন্য, C-c C-pপ্রজেক্টাইলকে অনুরোধ s gকরবে এবং গ্রেপ অনুসন্ধান করবে। আপনি নিজের অনুসন্ধানটি ধরে visit_contactনিচ্ছেন এবং আপনি কোনও প্রকল্পে রুবির আরএসপেক অনুসন্ধান করছেন: এই ধরণের একটি সুন্দর আউটপুট আপনি পাবেন :

./spec/support/capybara_classification_code_helper.rb:21:  def visit_contact
./spec/features/admin_edits_classification_code_role_dynamic_field_spec.rb:8:    visit_contact
./spec/features/admin_edits_classification_code_role_dynamic_field_spec.rb:33:    visit_contact
./spec/features/user_views_global_filters_from_line_item_spec.rb:9:      visit_contact
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.