সমাধান 1 (সেরা সমাধান):
পরামর্শ ইনস্টল করুন ( https://github.com/abo-abo/swiper/blob/master/counsel.el )
তারপরে M-x counsel-git-grep
।
কোনও সেটআপের প্রয়োজন নেই (গিটটি প্রকল্পের মূল এবং বাদ দিতে ফাইলগুলি জানে)। উভয় git grep
এবং counsel
দক্ষ।
প্রকল্পটি গিট দ্বারা পরিচালনা করা প্রয়োজন।
পরামর্শ আইভি-মোড প্রয়োজন।
সমাধান 2:
এই সমাধানটি গ্রেপ ব্যবহার করে এবং যে কোনও প্রকল্পে কাজ করে। এটি সমাধান 1 এর নিকৃষ্টতর কারণ এটি ধীর এবং ম্যানুয়াল সেটআপ প্রয়োজন। এটি আইভি-মোডের উপর ভিত্তি করে।
(defvar simple-project-root "~/.emacs.d")
(defun simple-grep ()
(interactive)
(unless (featurep 'ivy)
(require 'ivy))
(let* ((default-directory (file-name-as-directory simple-project-root))
(keyword (read-string "Keyword:")))
(ivy-read (format "Grep at %s:" simple-project-root)
(split-string (shell-command-to-string (format "grep -rsnI %s ." keyword)) "\n" t)
:action (lambda (val)
(let* ((lst (split-string val ":"))
(linenum (string-to-number (cadr lst))))
;; open file
(find-file (car lst))
;; goto line if line number exists
(when (and linenum (> linenum 0))
(goto-char (point-min))
(forward-line (1- linenum))))))))
আপনার সেটআপের জন্য .dir-local.el তৈরি করতে হবে simple-project-root
, প্রযুক্তিগত তথ্যের জন্য https://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html দেখুন
সমাধান 2 এর কোডটি কেবল একটি প্রোটোটাইপ। আমার বাস্তব বাস্তবায়ন অনেক জটিল। দেখুন counsel-etags-grep
এ https://github.com/redguardtoo/counsel-etags/blob/master/counsel-etags.el
সারসংক্ষেপ:
এগুলি আমার জানা সেরা দুটি সমাধান।
অন্য কোনও ভাল সমাধান যদি বিদ্যমান থাকে তবে উত্পাদন-প্রস্তুত হওয়ার জন্য তাদের কমপক্ষে নীচের সমস্যার সমাধান করতে হবে,
কীভাবে গ্রেপ-তে কীওয়ার্ড পাবেন (উদাহরণস্বরূপ, নির্বাচিত অঞ্চল থেকে কীওয়ার্ড পান)
কীওয়ার্ড এড়িয়ে চলুন
যদি আরও দক্ষ গ্রেপ প্রোগ্রাম বিদ্যমান থাকে তবে আমাদের এটি ব্যবহার করা উচিত (রিপগ্রিপ, দ্য_সিলভার_সার্চার / এজি, ... ইত্যাদি), অথবা অন্যথায় ডিফল্ট গ্রেপ
প্রার্থী উইন্ডোটির স্ক্রিনের পুরো প্রস্থ ব্যবহার করা উচিত এবং ব্যবহারকারীরা ইন্টারেক্টিভভাবে প্রার্থীদের ফিল্টার করতে পারে (এজন্য লোকেরা আইভি বা হেলম ব্যবহার করে)
আমাদের প্রার্থী উইন্ডোতে আপেক্ষিক পথটি দেখানো উচিত
পূর্ববর্তী গ্রেপড ফলাফল পুনরায় ব্যবহার করতে সক্ষম। সুতরাং আগের ফলাফল সংরক্ষণ করা উচিত। আপনি ব্যবহার করতে পারেন ivy-resume
থেকে ivy
বা helm-resume
থেকেhelm
আপনি যখন আগের গ্রেপড ফলাফল সংরক্ষণ করেন, তখন আগের ফলাফলের প্রসঙ্গটিও সংরক্ষণ করা উচিত। উদাহরণস্বরূপ, সলিউশন 2 এর কোডটিতে default-directory
প্রসঙ্গ। আরও তথ্যের জন্য https://github.com/abo-abo/swiper/issues/591 দেখুন ।
বর্ধিত নিয়মিত অভিব্যক্তিটি ব্যবহার করা উচিত কারণ এটি সহজ এবং ইতোমধ্যে counsel-git-grep
এবং the_silver_searcher / ag ব্যবহার করে ।
helm-projectile-grep
কমান্ডটি ব্যবহার করে চেষ্টা করেছেন (যদি আপনি হেলম প্রজেক্টিল ইনস্টল করেন) বাprojectile-grep
?