ইতিমধ্যে খোলা হয়নি এমন পাঠ্য ফাইলগুলিতে পুনরাবৃত্তভাবে সন্ধান এবং প্রতিস্থাপন করতে ইমাস ব্যবহার করা


212

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

আল্ট্রাডাইটে আমি আল্ট + এর পরে পি বিকল্পগুলি সহ একটি ডায়ালগ বাক্স প্রদর্শন করব: সন্ধান করুন (একাধিক লাইন জুড়ে নিয়মিত এক্সপ্রেশন ব্যবহার করে অন্তর্ভুক্ত), ফাইল / ধরন, ডিরেক্টরি, ম্যাচ কেস, পুরো শব্দটির সাথে কেবল মিল করুন, তালিকা পরিবর্তিত ফাইল এবং অনুসন্ধান উপ ডিরেক্টরি। সাধারণত আমি ক্লিক করে টেনে আনতে প্রথমে মাউসটি ব্যবহার করব যে পাঠ্যটি প্রতিস্থাপন করতে চাই select

কোনও বহিরাগত ইউটিলিটি না ডেকে শুধুমাত্র ইমাস নিজেই (উইন্ডোজ এক্সপি তে) ব্যবহার করে, কীভাবে সমস্ত f \ nbar বার বার baz n বাজ *.cএবং *.hকিছু ফোল্ডারে ফাইল এবং এর নীচে সমস্ত ফোল্ডার প্রতিস্থাপন করা যায়। সম্ভবত ইমাকস এটি করার সর্বোত্তম সরঞ্জাম নয় তবে এটি কোনও নূন্যতম কমান্ডের সাহায্যে কীভাবে সহজে করা যায়?

উত্তর:


370
  1. M-x find-name-dired: আপনাকে একটি রুট ডিরেক্টরি এবং একটি ফাইল নাম প্যাটার্নের জন্য অনুরোধ জানানো হবে।
  2. প্রেস tসমস্ত ফাইল জন্য "টগল চিহ্ন" খুঁজে পাওয়া যায়নি।
  3. Q"ফাইলগুলিতে প্রশ্ন-প্রতিস্থাপন ..." এর জন্য টিপুন : আপনাকে ক্যোয়ারী / প্রতিস্থাপনের পুনর্নির্মাণের জন্য অনুরোধ জানানো হবে।
  4. এর সাথে এগিয়ে যান query-replace-regexp: SPACEপ্রতিস্থাপন এবং পরবর্তী ম্যাচে চলে যাওয়া, nকোনও ম্যাচ এড়িয়ে যাওয়া ইত্যাদি
  5. C-x sবাফারগুলি সংরক্ষণ করতে টিপুন । (আপনি তারপর টিপতে পারেন y, nবা !একবারে সব সংরক্ষণ করার জন্য)

10
না, এটি পুনরাবৃত্তি। নন-রিকার্সিভ ভার্সনটি ডিয়ার মোডে% মি হবে।
ক্রিস কনওয়ে

5
কারণ আপনি সি: calling উইন্ডোজ \ system32 \ find.exe কল করছেন, জিএনইউ খুঁজে পাচ্ছেন না Maybe
জাজ

6
স্টিন, ক্রিস: সম্ভবত আপনি যা চান ঠিক তেমন নয় তবে আপনি 'সিক্স এস' (কিছু-বাফার বাঁচাতে) ব্যবহার করতে পারেন, এটি আপনাকে প্রতিটি পরিবর্তিত ফাইলের জন্য অনুরোধ করবে, সুতরাং আপনাকে কেবল 'এক' একাধিকবার আঘাত করতে হবে।
ড্যানিয়েলপো

48
C-x s !একবারে সমস্ত ফাইল সংরক্ষণ করতে।
সিউরাস

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

37
  • M-x find-name-dired RET
    • সমস্ত ফাইল তালিকাতে প্রদর্শিত হতে কিছুক্ষণ সময় নিতে পারে, নীচে স্ক্রোল করুন M->" find finished" যতক্ষণ না সেগুলি সমস্ত লোড হয়েছে তা নিশ্চিত না হওয়া পর্যন্ত
  • প্রেস tসমস্ত ফাইল জন্য "টগল চিহ্ন" পাওয়া
  • Q"ফাইলগুলিতে প্রশ্ন-প্রতিস্থাপন ..." এর জন্য টিপুন : আপনাকে ক্যোয়ারী / প্রতিস্থাপনের পুনর্নির্মাণের জন্য অনুরোধ জানানো হবে।
  • ক্যোয়ারী-রিপ্লেজ-রেজিপ্সপ: স্পেস বা yপ্রতিস্থাপন এবং পরবর্তী ম্যাচে চলে যাওয়া, এন ম্যাচ এড়িয়ে যাওয়া ইত্যাদি ইত্যাদি নিয়ে এগিয়ে যান etc.
    • টাইপ! জিজ্ঞাসা না করেই বর্তমান ফাইলের সমস্ত উপস্থিতি প্রতিস্থাপন করতে, বর্তমান ফাইলের Nবাকী সমস্ত সম্ভাব্য প্রতিস্থাপনটি এড়িয়ে যেতে। ( Nকেবল ইমাম 23++)
    • আরও জিজ্ঞাসা না করে সমস্ত ফাইলের প্রতিস্থাপনটি করতে টাইপ করুন Y
  • সমস্ত খোলা ফাইলের তালিকা C-x C-bকরতে "আইবুফার" ( যদি আইফুফারের সাথে আবদ্ধ থাকে, বা M-x ibuffer RET) কল করুন ।
  • টাইপ করুন * uসব অসংরক্ষিত ফাইল চিহ্নিত করতে টাইপ করুন Sসব চিহ্নিত ফাইলগুলি সংরক্ষণ করতে
  • * * RETসমস্ত চিহ্ন অচিহ্নিত করতে, বা Dসমস্ত চিহ্নিত ফাইল বন্ধ করতে টাইপ করুন

এই উত্তরটি এই উত্তর থেকে, এই সাইট থেকে এবং আমার নিজের নোটগুলি থেকে মিলিত হয়েছে । ইমাস 23+ ব্যবহার করা হচ্ছে।


3
ibufferC-x C-bডিফল্ট হিসাবে আবদ্ধ হয় না ।
ফিলিপস

2
ওয়েল ব্যক্তিগতভাবে আমি সুপারিশ করছি যে মানুষ না বাঁধে C-x C-bকরতে ibuffer, তাই অনেক ভালো ডিফল্ট বাঁধাই চেয়ে কারণ। (global-set-key (kbd "C-x C-b") 'ibuffer)আপনার .emacs ফাইলটিতে কেবল যুক্ত করুন। যে ব্যর্থ, M-x ibuffer RETউপরের নির্দেশাবলী ব্যবহার করুন ।
ফিলস

ঠিক আছে. আমি মনে করি আমার কাছে ইমাক্স স্টার্টআপ কিট রয়েছে, যার কারণেই আমার আবদ্ধ
ফ্র্যাঙ্ক হেনার্ড

1
ফাইলটি bla-bla-blaকেবল পঠনের জন্য পরিদর্শন করা হয় এবং এটি অনুসন্ধান করা বন্ধ করে দেয়। কীভাবে এড়ানো / উপেক্ষা করে প্রতিস্থাপন করা যায়? ধন্যবাদ।
ফিলিপ

3
ibufferআপনি যখন C-x s( save-some-buffers) টাইপ করতে পারেন তখন কেন !? আমি অভিমানী হতে চাই না, কেবল কৌতূহলী। বর্ণনা করার জন্য পিএস প্লাস !, Nএবং Y
d12froted

17

প্রদত্ত উত্তরগুলি দুর্দান্ত, তবে আমি ভেবেছিলাম যে আমি কিছুটা ভিন্ন পদ্ধতির যোগ করব।

এটি একটি আরও ইন্টারঅ্যাকটিভ পদ্ধতি, এবং প্রয়োজন wgrep, rgrepএবং iedit। উভয়ই ieditএবং wgrepঅবশ্যই মেলপা বা মারম্যাডের মাধ্যমে ইনস্টল করা উচিত (ব্যবহার করে M-x package-list-packages)

M-x rgrepআপনি যে স্ট্রিংটি খুঁজছেন তা সন্ধান করতে প্রথমে রান করুন ।

আপনি ফাইলের ধরন / প্যাটার্ন এবং পুনরাবৃত্তি করতে ফোল্ডারটি নির্দিষ্ট করতে সক্ষম হবেন।

এরপরে আপনাকে wgrepএটি দিয়ে চালানো দরকার C-s C-p

Wgrep আপনি সম্পাদনা করতে দেবে rgrepফলাফল তাই মেলে এবং শুরু করার জন্য স্ট্রিং উপর একটি অঞ্চল সেট, iedit-modeসঙ্গেC-; (আপনার টার্মিনাল উপর নির্ভর করে আপনি পুনরায় বেঁধে এই প্রয়োজন হতে পারে)

সমস্ত ঘটনা একবারে সম্পাদনাযোগ্য হবে। C-x C-sসমর্পণ করতে wgrep। তারপরে C-x s !পরিবর্তিত ফাইলগুলি সংরক্ষণ করুন।

এই পদ্ধতির মূল সুবিধা হ'ল আপনি iedit-modeনির্দিষ্ট ম্যাচগুলি টগল করতে ব্যবহার করতে পারেন M-;rgrepফাইলগুলিতে ঝাঁপ দেওয়ার জন্য আপনি ফলাফলগুলিও ব্যবহার করতে পারেন , উদাহরণস্বরূপ যদি আপনার কোনও অপ্রত্যাশিত ম্যাচ থাকে।

উত্স সম্পাদনাগুলি করতে এবং একটি প্রকল্প জুড়ে প্রতীক (পরিবর্তনশীল, ফাংশন নাম ইত্যাদি) নামকরণের জন্য এটি খুব দরকারী বলে মনে করি।

যদি আপনি ইতিমধ্যে আইডিট মোডটি জানেন না / ব্যবহার করেন তবে এটি খুব কার্যকর সরঞ্জাম, আমি আপনাকে দৃ strongly়রূপে এটির চেহারা দেওয়ার পরামর্শ দিচ্ছি।


এই কৌশলটি আইডিডিটি ব্যবহার না করেও বেশ শক্তিশালী। কীভাবে বৃহত্তর অনুসন্ধান করতে হবে তা (লিগ্রেপ / আরজিআরপি দিয়ে সহজ) কীভাবে সন্ধান-প্রতিস্থাপন করতে হবে তা শিখতে পরিণত হয়!
নীলেনমারাইস

Rgrep / wgrep / ম্যাক্রোগুলের সংমিশ্রণ দুর্দান্ত।
ocodo

2
কি-বাইন্ডিং শুরু করার wgrepজন্য বিটিডব্লিউ C-c C-p
টেকনিকও

15

প্রজেটাইল সত্যিই দুর্দান্ত: সিসি পিআর প্রজেক্টাইল-রিপ্লেস কমান্ডটি চালায়


13

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

উত্স ফাইলের অংশ চুরি করা :

(defun findr-query-replace (from to name dir)
  "Do `query-replace-regexp' of FROM with TO, on each file found by findr.

আমি কীভাবে এক্সটেনশান জাভা এবং এইচএক্সএক্স ফাইন্ডারেল ব্যবহার করে সমস্ত ফাইলের স্ট্রিং "সংগ্রহযোগ্য" খুঁজে পেতে চেষ্টা করব?
সোদেব

@swdev: Mx findr-ক্যোয়ারী-প্রতিস্থাপন RET সংগ্রহযোগ্য RET <প্রতিস্থাপন> RET * \ জাভা RET RET <ডিরেক্টরির মধ্যে অনুসন্ধান শুরু
ShreevatsaR

আমি এই পদ্ধতির পছন্দ করি (এটি সরাসরি পদ্ধতির সাথে জড়িত সমস্ত টগলিং এড়ানো হয়)। এটিকে প্রজেক্টাইল (প্রকল্প-রুট-আবিষ্কার) এর সাথে একত্রিত করতে আমি কিছু সুবিধাজনক ফাংশন ব্যবহার করি এবং বিষয়টিকে প্রতিস্থাপন করতে পারি: gist.github.com/anonymous/055a9d62f9fc824153599724b8f44d57
এট

6

তথ্যের উত্স:

ইমাস প্রো ব্যবহারকারীদের জন্য:

  1. ডায়ারে ফাইল তালিকা করতে ডায়ার্ডকে কল করুন বা আপনার যদি সমস্ত সাব-ডিরেক্টরিতে প্রয়োজন হয় তবে ফাইন্ড-ডায়ার্ড কল করুন।
  2. আপনি চান ফাইল চিহ্নিত করুন। আপনি রেগেক্স দ্বারা 【% m m টাইপ করে চিহ্নিত করতে পারেন】
  3. ডায়ার্ড-ডু-কোয়েরি-রিপ্লেস-রিজেপ এক্সকে কল করতে Q টাইপ করুন
  4. আপনার ফাইন্ড রেজেক্স টাইপ করুন এবং স্ট্রিং প্রতিস্থাপন করুন। El ☛ সাধারণ এলিজ্প রেজেক্স প্যাটার্ন〕
  5. প্রতিটি ঘটনার জন্য, প্রতিস্থাপন করতে y টাইপ করুন, n এড়তে ছাড়ুন। পুরো ক্রিয়াকলাপটি বাতিল করতে 【Ctrl + g Type টাইপ করুন।
  6. টাইপ! জিজ্ঞাসা না করে বর্তমান ফাইলের সমস্ত উপস্থিতি প্রতিস্থাপন করতে, এন বর্তমান ফাইলের বাকী সমস্ত সম্ভাব্য প্রতিস্থাপন এড়িয়ে যেতে হবে। (এন কেবল ইমাস 23 হয়)
  7. আরও জিজ্ঞাসা না করে সমস্ত ফাইলে প্রতিস্থাপনটি করতে, ওয়াই টাইপ করুন (কেবলমাত্র ইমাস 23)
  8. সমস্ত খোলা ফাইলের তালিকা করতে আইফুফারকে কল করুন। সমস্ত সংরক্ষিত ফাইল চিহ্নিত করতে 【* u Type টাইপ করুন, সমস্ত চিহ্নিত ফাইল সংরক্ষণ করতে এস টাইপ করুন, সেগুলি বন্ধ করতে ডি টাইপ করুন।

ইমাস শুরুর জন্য ধাপে ধাপে গাইড

লক্ষ্য ফাইল নির্বাচন করুন

কমান্ড লাইন ইন্টারফেস প্রম্পটে "emacs" টাইপ করে ইমাস শুরু করুন। (অথবা আপনি যদি গ্রাফিক্স ব্যবহারকারী ইন্টারফেস পরিবেশে থাকেন তবে ইমাস আইকনটিতে ডাবল ক্লিক করুন)

একটি ডিরেক্টরিতে ফাইল নির্বাচন করা হচ্ছে

প্রথমে আপনাকে যে ফাইলগুলি প্রতিস্থাপন করতে হবে তা নির্বাচন করতে হবে। গ্রাফিকাল মেনু 〖ফাইল ▸ ডিরেক্টরি খুলুন Use ব্যবহার করুন〗ইমাস আপনাকে ডিরেক্টরি পথের জন্য জিজ্ঞাসা করবে। ডিরেক্টরি পাথ টাইপ করুন, তারপরে এন্টার টিপুন।

এখন, আপনাকে ফাইলগুলির তালিকা প্রদর্শিত হবে এবং এখন আপনাকে যে ফাইলগুলি কাজ করতে চান তা রেগেক্স সন্ধান / প্রতিস্থাপন করতে চান তা চিহ্নিত করতে হবে। আপনি যে ফাইলটি চান সেটিতে কার্সারটি সরিয়ে একটি ফাইল চিহ্নিত করুন, তারপরে m টিপুন। ইউ টিপে এটি চিহ্নমুক্ত করুন। (উপ-ডিরেক্টরি তালিকাতে তালিকাটিতে আপনার কার্সারটি সরান এবং i টিপুন-সাব-ডিরেক্টরিটির বিষয়বস্তু নীচে তালিকাভুক্ত হবে)) সমস্ত ফাইলকে একটি রেজেক্স দ্বারা চিহ্নিত করতে, 【% m type টাইপ করুন, তারপরে আপনার রেজেক্স প্যাটার্নটি টাইপ করুন। উদাহরণস্বরূপ, আপনি যদি সমস্ত এইচটিএমএল ফাইল চিহ্নিত করতে চান তবে 【% m type তারপর .html ml টাইপ করুন $ (আপনি গ্রাফিকাল মেনুতে "চিহ্ন" চিহ্নের কমান্ডগুলির একটি তালিকা পেতে পারেন (আপনি যখন ডায়ার্ড মোডে থাকবেন তখন এই মেনুটি উপস্থিত হয়))

একটি ডিরেক্টরি এবং এর সমস্ত উপ-ডিরেক্টরিতে ফাইল নির্বাচন করা

আপনি যদি কয়েকশো উপ-ডিরেক্টরি সহ কোনও ডিরেক্টরিতে থাকা ফাইলগুলি সন্ধান / প্রতিস্থাপন করতে চান তবে এই সমস্ত ফাইল নির্বাচন করার জন্য এখানে একটি পদ্ধতি রয়েছে।

কল ফাইন্ডডায়ার্ড। (আপনি 【Alt + x press টিপে একটি কমান্ড কল করুন) তারপরে, একটি ডিরেক্টরি নাম টাইপ করুন, ⁖ / ব্যবহারকারী / ম্যারি / মাইফাইলস

দ্রষ্টব্য: আপনি যদি ইউনিক্স নন-গ্রাফিকাল পাঠ্য টার্মিনালে ইম্যাকস ব্যবহার করছেন এবং যদি 【Alt + x not কাজ না করে, তবে সমমানের কী স্ট্রোকটি হ'ল 【Esc x】】

ইমাকস আপনাকে "রান ফাইন্ড (আরগস সহ):" প্রম্পট দিয়ে জিজ্ঞাসা করবে। আপনার যদি সমস্ত এইচটিএমএল ফাইলগুলিতে প্রতিস্থাপনটি করতে হয় তবে টাইপ করুন-নাম "* এইচটিএমএল"। আপনি যদি সেই ধরণের অধীনে কোন ধরণের ফাইল কিন্তু কেবল সমস্ত ফাইলের বিষয়ে চিন্তা করেন না, তবে "-প্রকার চ" দিন।

এখন, উপরে বর্ণিত ফাইলগুলি চিহ্নিত করুন।

ইন্টারেক্টিভ সন্ধান / প্রতিস্থাপন

এখন, আপনি ইন্টারেক্টিভ অনুসন্ধান প্রতিস্থাপন করতে প্রস্তুত do সরলতার জন্য, আসুন আমরা বলি যে আপনি কেবল "সুপার" দ্বারা "দ্রুত" শব্দটি প্রতিস্থাপন করতে চান। এখন, ডায়ার্ড-ডু-কোয়েরি-রিপ্লেস-রিজেক্সকে কল করুন। এটি আপনাকে রেজেক্স স্ট্রিং এবং প্রতিস্থাপনের স্ট্রিংয়ের জন্য অনুরোধ জানাবে। "দ্রুত" টাইপ করুন, প্রবেশ করুন, তারপরে "সুপার"।

এখন, ইমাস আপনার প্যাটার্নটি ব্যবহার করবে এবং ফাইলগুলি পরীক্ষা করবে এবং যখনই কোনও ম্যাচ ঘটবে তখন থামবে এবং আপনাকে দেখাবে। যখন এটি হয়, ইমাস আপনাকে প্রম্পট করবে এবং আপনার পরিবর্তন করার বা পরিবর্তন এড়িয়ে যাওয়ার একটি বিকল্প রয়েছে। পরিবর্তনটি করতে y টাইপ করুন। এড়িয়ে যেতে, টাইপ করুন এন। যদি আপনি কেবল ইম্যাকসটি এগিয়ে যেতে চান এবং বর্তমান ফাইলে এমন সমস্ত পরিবর্তন করতে চান তবে টাইপ করুন!

আপনি যদি কোনও পরিবর্তন না করে পুরো অপারেশনটি বাতিল করতে চান তবে 【Ctrl + g type টাইপ করুন, তারপরে মেনু 〖ফাইল ▸ প্রস্থান করুন ইম্যাকস using ব্যবহার করে ইম্যাকগুলি প্রস্থান করুন〗

পরিবর্তিত ফাইল সংরক্ষণ করা হচ্ছে

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

আপনি যদি ইমাস সংস্করণ ২২ বা তার পরে ব্যবহার করছেন, তবে বাফার তালিকার মোডে যেতে আইফুফারকে কল করুন, তারপরে সমস্ত সংরক্ষিত ফাইল চিহ্নিত করতে 【* u type টাইপ করুন, তারপরে সেগুলি সংরক্ষণ করতে এস টাইপ করুন। (এটি শিফট-গুলি)

আপনি যদি ইমাস সংস্করণ 21 ব্যবহার করে থাকেন তবে আপনি এটি করতে পারেন: কল তালিকান-বাফারগুলি, তারপরে আপনি যে ফাইলটি সংরক্ষণ করতে চান সেটিতে কার্সারটি সরান এবং টাইপ করুন। এটি পরে সংরক্ষণের ক্রিয়াটির জন্য ফাইলটিকে চিহ্নিত করবে। চিহ্ন চিহ্ন করতে আপনার টাইপ করুন। আপনার কাজ শেষ হয়ে গেলে, সংরক্ষণের জন্য চিহ্নিত সমস্ত ফাইলের সংরক্ষণ চালিত করতে এক্স টাইপ করুন। (ইম্যাক্সে, খোলা ফাইলটিকে "বাফার" বলা হয় there সেখানে অন্যান্য জিনিস উপেক্ষা করুন))

উপরের বিকল্পগুলির বিকল্প হিসাবে, আপনি সেভ-কিছু-বাফারকে 【Ctrl + xs call কল করতে পারেন】তারপরে ইম্যাকস প্রতিটি সংরক্ষণ না করা ফাইল প্রদর্শন করবে এবং আপনি এটি সংরক্ষণ করতে চান কিনা তা জিজ্ঞাসা করবে।

দ্রষ্টব্য: ইম্যাক্সের রেজেেক্স পার্ল বা পাইথনের মতো নয়, তবে একই। একটি সংক্ষিপ্তসার এবং সাধারণ নিদর্শনগুলির জন্য, দেখুন: ইম্যাক্স রেজেক্স।


2
এই উত্তরটি আশা করি সবচেয়ে বেশি ভোট দেওয়া উত্তরের চেয়ে আরও নূন্যতম বান্ধব করে তুলবে। আমাকে লিঙ্কটির পরিবর্তে পুরো জিনিসটি রাখার জন্য উদ্বুদ্ধ করার জন্য ধন্যবাদ for
প্রশান্ত শর্মা

উত্তরটি উত্স দিয়ে শুরু হয়: প্রথম লাইন হিসাবে। কপি পেস্ট করার যুক্তিটি হ'ল: কখনও কখনও ব্লগের বাহ্যিক লিঙ্কটি পুরানো হয়ে যায় এবং তারপরে উত্তরটি অকেজো হয়ে যায়। এবং এইভাবে উইকি মেটা দ্বারা প্রস্তাবিত। আমি পুরো জিনিসটি অনুলিপি করার সিদ্ধান্ত নিয়েছি।
প্রশান্ত শর্মা

5

একটি গভীর ডিরেক্টরি গাছ পুনরাবৃত্তি করতে dided ব্যবহার এই কাজের জন্য কিছুটা ধীর হতে চলেছে। আপনি ট্যাগ-ক্যোয়ারী-প্রতিস্থাপন ব্যবহার বিবেচনা করতে পারেন । এর অর্থ এই নয় যে একটি ট্যাগ টেবিল তৈরি করতে শেল আউট করা, তবে এটি প্রায়শই কার্যকর হয়, এবং এটি দ্রুত।


14,000 এরও বেশি ফাইল সহ একটি ডিরেক্টরিতে চেষ্টা করেছি। ইমাসে পপআপ করতে কয়েক সেকেন্ড সময় নিয়েছে। সুতরাং অবশ্যই ধীর হয় না (আর))
বেরেন্ড দে বোয়ার

3

খোলা বাফারদের জন্য, আমি এটিই করি:

(defun px-query-replace-in-open-buffers (arg1 arg2)
  "query-replace in all open files"
  (interactive "sRegexp:\nsReplace with:")
  (mapcar
   (lambda (x)
     (find-file x)
     (save-excursion
       (goto-char (point-min))
       (query-replace-regexp arg1 arg2)))
   (delq
    nil
    (mapcar
     (lambda (x)
       (buffer-file-name x))
     (buffer-list)))))

3

M-X Dired, এবং টি সমস্ত ফাইল চিহ্নিত করতে এবং সেগুলির Qসমস্তটিতে পাঠ্য প্রতিস্থাপনের জন্য জিজ্ঞাসা করতে। আপনি iক্যোয়ারী-প্রতিস্থাপনের আগে কমান্ডটি ব্যবহার করে একটি উপ ডিরেক্টরি বাড়াতে পারেন । তারা কী তথ্য আমি যোগ করছি যে আপনি যদি একটি উপসর্গ আমি কমান্ড (Control-প) দাও, তবে তা ARG জন্য আপনাকে সূচিত করা হবে, এবং -R যুক্তি যাও recursively সব প্রসারিত হবে subdirs মধ্যে diredবাফার। সুতরাং এখন আপনি একটি সম্পূর্ণ ডিরেক্টরিতে প্রতিটি ফাইল ক্যোয়ারী-অনুসন্ধান করতে পারেন।


2

অন্য বিকল্প হ'ল আইকিলস অনুসন্ধান ব্যবহার করা । এটি ভিন্ন ধরণের ইনক্রিমেন্টাল অনুসন্ধান যা অনুসন্ধানের হিটগুলির বিরুদ্ধে আপনার মিনিফার ইনপুটটির সমাপ্তি ব্যবহার করে। আপনি আপনার বর্তমান ইনপুটটি সংশোধন করার সাথে সাথে ম্যাচের হিটগুলির সেটটি বাফারে আপডেট হবে *Completions*

আপনি যে কোনও সংখ্যক ফাইল, বাফার বা বুকমার্কযুক্ত অবস্থান সন্ধান করতে পারেন, যা আপনি মিনিবাসার প্যাটার্ন (উদাহরণস্বরূপ রিজেক্সপ) ম্যাচ ব্যবহার করে বেছে নিতে পারেন।

আপনি যখন অনুসন্ধান অনুসন্ধান দেখুন আপনি প্রতিস্থাপন করতে পারেন পুরো হিট বা কেবলমাত্র এটির বর্তমান অংশটি আপনার বর্তমান মিনিবুফার ইনপুটটির সাথে মিলে যায় তবে চাহিদা অনুযায়ী । চাহিদার প্রতিস্থাপনের অর্থ হ'ল প্রতিটি অনুসন্ধানের জন্য আপনি জিজ্ঞাসাবাদ করছেন না; আপনি যে কোনও হিট সরাসরি চাইলে অ্যাক্সেস করতে পারেন। আপনার কাছে যদি সীমিত সংখ্যক প্রতিস্থাপনের ব্যবস্থা করা থাকে তবে এই পদ্ধতিটি ক্যোয়ারী-প্রতিস্থাপনের চেয়ে আরও কার্যকর হতে পারে: আপনি বহনকারী y/nপ্রম্পটিংটি এড়িয়ে যান ।

অনুসন্ধানটি আপনার নির্ধারিত অনুসন্ধান প্রসঙ্গে যেগুলি - আপনি লক্ষ্যযুক্ত ফাইলগুলির সমস্ত পাঠ্য সন্ধানের মধ্যে সীমাবদ্ধ নন (উদাহরণস্বরূপ, আপনি মন্তব্য বা নির্দিষ্ট ধরণের প্রোগ্রাম বিভাগগুলি এড়িয়ে যেতে পারেন)। অনুসন্ধান প্রসঙ্গে একটি সাধারণ উদাহরণ হ'ল লাইন ingrep তবে একটি প্রসঙ্গ আপনার পছন্দ মতো কোনও পাঠ্য-মিলের ব্লক হতে পারে। সাধারণত আপনি একটি রেজিপ্সপ ব্যবহার করে অনুসন্ধানের প্রসঙ্গগুলি সংজ্ঞায়িত করেন তবে আপনি পরিবর্তে কোনও ফাংশন ব্যবহার করতে পারেন। আপনার নিজস্ব সংজ্ঞা দেওয়ার পাশাপাশি বিভিন্ন ধরণের প্রসঙ্গের জন্য পূর্বনির্ধারিত আইকিক্যালস অনুসন্ধান কমান্ড রয়েছে: পাঠ্য বৈশিষ্ট্য বা ওভারলে বৈশিষ্ট্যগুলির ব্লক, জিনিস-এ-পয়েন্ট বিষয়গুলি etc.

আপনি সহজে অ্যাক্সেস / নেভিগেশনের জন্য অনুসন্ধানের হিটগুলি বিভিন্ন ধরণের অর্ডারে বাছাই করতে পারেন ।


2

find-name-dired ঠিক আছে, কিন্তু:

  • আপনি যে ফাইলগুলি পেয়েছেন তার সবকটিই একই, একক রেজিপ্স্পের সাথে মিলছে।
  • find-diredএ ক্ষেত্রে আরও নমনীয়, তবে এটিও সাধারণ নিয়ম ব্যবহারের জন্য তৈরি করা হয়েছে (এমনকি তারা নির্বিচারে জটিলও হতে পারে)। এবং অবশ্যই findএর নিজস্ব, জটিল ভাষা রয়েছে।
  • এরপরে আপনি যদি কেবলমাত্র কয়েকটি ফাইলের উপরই কাজ করতে চান যার নাম find(-name)-diredবাফারে সংগ্রহ করা হয়েছিল , আপনাকে সেগুলি চিহ্নিত করতে হবে বা আপনি যেগুলির উপর অভিনয় করতে চান না তাদের লাইনগুলি মুছে ফেলতে / বাদ দিতে হবে।

একটি বিকল্প হ'ল ডায়ার্ড + কমান্ডগুলি ব্যবহার করা যা (ক) চিহ্নিত ফাইলগুলি এবং (খ) চিহ্নিত চিহ্নিত সাব-ডিরেক্টরিতে সমস্ত চিহ্নিত ফাইল (বা সমস্ত ফাইল, যদি কোনও চিহ্নযুক্ত না হয়) ব্যবহার করে ... পুনরাবৃত্তভাবে পাওয়া গেছে । এটি আপনাকে ফাইল পছন্দের উপর সাধারণতা এবং সহজ নিয়ন্ত্রণ উভয়ই দেয়। এই "এখানে-নীচে" কমান্ডগুলি সমস্ত M-+ডিয়ার মোডে প্রিফিক্স কীতে রয়েছে।

উদাহরণস্বরূপ, --- ক্যোয়ারী-প্রতিস্থাপনের M-+ Qমতোই Q, তবে টার্গেট ফাইলগুলি হ'ল বর্তমান ডিয়ারে এবং চিহ্নিত চিহ্নিত সাবডায়ারারে নিচে, নিচে, নিচে চিহ্নিত সমস্ত ...

হ্যাঁ, এই ধরনের ব্যবহার করে একটি বিকল্প এখানে-এবং-নিচে কমান্ড হয় ঢোকান , সমস্ত subdirs এবং তাদের subdirs যাও recursively, এবং তারপর এর মত টপ লেভেল কমান্ড ব্যবহার Q। তবে প্রায়শই sertedোকানো সাবডিয়ারগুলির সাথে বিরক্ত না করা সুবিধাজনক হতে পারে।

এবং এটি করার জন্য আপনাকে এ জাতীয় সমস্ত সাবডিয়ারগুলি পুনরাবৃত্তভাবে sertোকানোর জন্য দ্রুত উপায় প্রয়োজন । এখানেও, ডিয়ারড + সহায়তা করতে পারে। M-+ M-iসমস্ত চিহ্নিত সাবডিয়ার এবং তাদের নিজস্ব চিহ্নিত সাবডিয়ারগুলি পুনরাবৃত্তভাবে সন্নিবেশ করান। এটি হ'ল এটি M-i(যা ডায়ার্ড + এর মধ্যে চিহ্নিত সাবডিয়ারগুলি সন্নিবেশ করে ) এর মতো, তবে এটি সাবডিয়ারগুলিতে পুনরাবৃত্তভাবে কাজ করে।

(এই জাতীয় "এখানে এবং নীচে" ডায়ার্ড + কমান্ডগুলি মেনুতে একাধিক > এখানে এবং নীচে চিহ্নিত রয়েছে ))

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

আপনি এটিও করতে পারেন বুকমার্ক এক যে আপনি ব্যবহার করে যা তৈরি সহ, কোনো Dired বাফার find(-name)-dired। এটি আপনাকে পরে এমন একটি সেট (উদাহরণস্বরূপ একটি প্রকল্প সেট) এ ফিরে যাওয়ার দ্রুত উপায় দেয়। এবং যদি আপনি বুকমার্ক + ব্যবহার করেন তবে একটি বিচ্ছিন্ন বাফার রেকর্ডগুলি বুকমার্ক করুন (ক) এর lsস্যুইচগুলি, (খ) কোন ফাইলগুলিকে চিহ্নিত করা হয়েছে, (গ) কোন উপ-ডিরেক্টরি sertedোকানো হয়েছে এবং (ঘ) কোন (উপ) ডিরেক্টরিগুলি লুকানো আছে? আপনি বুকমার্কে "লাফিয়ে" যাওয়ার পরে সমস্ত পুনরুদ্ধার করা হয়। বুকমার্ক + আপনাকে ডায়ার্ড বাফারগুলির একটি সম্পূর্ণ গাছ বুকমার্ক করতে দেয় --- বুকমার্কে ঝাঁপ দেওয়া গাছের সমস্ত বাফার পুনরুদ্ধার করে।


যে কে: কেন আপনি এই উত্তরকে নিম্নচাপ দিয়েছিলেন তা ব্যাখ্যা করার জন্য যত্নশীল?
ড্র হয়েছে

1

আমি আরও একটি দুর্দান্ত সরঞ্জামের পরামর্শ দিতে চাই যা এখনও হেলম হিসাবে উল্লেখ করা হয়নি ।

এটা অনেক মান গিয়ে Emacs অভিযান সমাপ্তির জড়িত অনুসন্ধানের ইত্যাদি বিশেষ করে একটি মহান প্রতিস্থাপন হয়, helm-find-filesএকাধিক নির্বাচিত ফাইলগুলি মধ্যে প্রতিস্থাপন QUERY (regexp সহ) সম্পাদন জন্য অনুমতি দেয়।

কেবল খুলুন helm-find-files, প্রাসঙ্গিক ফাইলগুলি চিহ্নিত করুন M-SPCএবং তারপরে নির্বাচিত ফাইলগুলিতে ক্যোয়ারী প্রতিস্থাপন বা কোয়েরি রিপ্লেজ রিজেপ্স ব্যবহার করুন F6বা F7চালনা করুন।


helm-find-filesপরিবর্তে regexp দ্বারা চিহ্নিত করতে পারেন M-SPC?
নর্ডলিউ

-2

এটি ইমাসস নয়, তবে এক্সএক্সডিফ একটি xx-rename নামক একটি সরঞ্জাম নিয়ে আসে যা একসাথে একাধিক স্ট্রিংয়ের জন্য এটি করবে (যেমন ইন্টারেক্টিভ প্রম্পট দিয়ে সমস্ত পরিবর্তিত ফাইলের ব্যাকআপ সংরক্ষণ করবে এবং একটি সংক্ষিপ্ত উত্পাদন করবে) প্রসঙ্গে তৈরি করা পরিবর্তনগুলির লগ। আমি যখন বৃহত্তর / বিশ্বব্যাপী নামকরণ করি তখন এটি ব্যবহার করার প্রবণতা থাকে।

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