এমন পংক্তির সন্ধান করুন যা একটি প্যাটার্ন ধারণ করে তবে এটিতে দ্বিতীয় প্যাটার্ন নেই


15

আমাকে এমন লাইনগুলি অনুসন্ধান করতে হবে যাতে কিছু শব্দ থাকে তবে দ্বিতীয় শব্দটি থাকে না ।

উদাহরণস্বরূপ, "রেড" শব্দটি নয় এমন লাইনগুলি সন্ধান করুন

যাতে এই লাইন থাকা ফাইলের জন্য

This is a blue coat
This is a red  coat
This is a purple coat
That is a coat

অনুসন্ধান কেবল প্রথম এবং তৃতীয় লাইন সনাক্ত করবে।

কোন পরামর্শের জন্য ধন্যবাদ!


আপনি লগিপ্যাট প্লাগইনটি ব্যবহার করতে পারেন যা নতুন ভিমস
— ক্রিশ্চিয়ান ব্রাবাঁট

উত্তর:


23

আপনি এই আদেশটি ব্যবহার করে লাইনগুলি অন্তর্ভুক্ত রাখতে Thisএবং মুদ্রণ করতে পারেন red:

:g/\(.*This\)\&\(.*red\)\@!
  • \&যৌক্তিকের মতো শাখাগুলি পৃথক করে ANDকারণ আমরা এমন দুটি রেখা চাই যা দুটি শর্ত পূরণ করে (শাখা),
  • \(.*This\)এটি প্রথম শাখা, এটি কেবলমাত্র হতে পারে Thisতবে এটি আরও জেনেরিক,
  • \(.*red\)\@!যৌক্তিকের মতো দ্বিতীয় শাখা, এর \@!অর্থ "পূর্ববর্তী পরমাণুটি মেলে না তবে শূন্য প্রস্থের ম্যাচ" NOT।

অন্য কথায়:

\(.*This\)  \&  \(.*red\)\@!
°°°°°°°°°°  °°  °°°°°°°°°°°°
'This'      AND NOT 'red'

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

1

এই পোস্টে একবার দেখুন।

@Romainl উত্তরের সাথে এটি একত্রিত করুন এবং আপনি যা চান তা করতে পারেন।

উদাহরণ: ধরা যাক আমি constযে ফাংশনগুলিতে নেই সেগুলিতে একটি যুক্ত করতে চাই ।

    handleChange = value => {

ভিআইএম স্ক্রিপ্ট:

%s/\([ ]*\)\(\w* = .*$\)\&^\(\&\(.*const.*\)\@!.\)*$/\1const \2/gc

আউটপুট:

    const handleChange = value => {

ব্যাখ্যা:

\([ ]*\)\(\w* = .*$\)

- যা আছে সব লাইন word =

\&

- বিধি সম্মিলন

^\(\&\(.*const.*\)\@!.\)*$

- লাইনে থাকা উচিত নয় const।

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