ভিমে একটি নির্দিষ্ট পাঠ্য প্যাটার্নের মধ্যে লাইনগুলিতে যোগদান করুন


8

আমার কাছে একটি টেক্সট ফাইল রয়েছে যা দেখতে এটির মতো দেখাচ্ছে:

A.
text
text
text


A.
more text

more text

A.
more text

আমি "চিহ্নিতকারী" এর মধ্যে সমস্ত লাইনে যোগ দিতে চাই A.যাতে দেখে মনে হয়:

A.texttexttext
A.more textmore text
A.more text

আমি কীভাবে এটি ভিমে করতে পারি?

উত্তর:


4
:%s/\n\(\(A\.$\)\@!.*\)/\1/

একটি প্যাটার্ন মিলের বিকল্প দিন:

  1. নতুন লাইন,
  2. সমন্বিত একটি গ্রুপ

    1. না স্ট্রিং A.সরাসরি শেষ অফ লাইন দ্বারা অনুসরণ, তারপর
    2. লাইনের শেষ অবধি কোনও অক্ষর

সঙ্গে:

  • শুরু হওয়া নিউলাইন (যেমন উপরের গ্রুপ) ব্যতীত সবকিছু মিলেছে,

এবং এটি বিশ্বব্যাপী করুন।


1
ধন্যবাদ। জিনিসটি কীভাবে কাজ করে তা আমার কোনও ধারণা নেই তবে মনে হয়! আমি এটি সাবধানে ছড়িয়ে দিতে হবে। আমি সমস্ত লাইনে যোগদান করে এবং তারপরে "এ" তে একটি নতুন লাইন সন্নিবেশ করে একটি কাজও পেয়েছিলাম around
ভিম নুব

@ ভিমনুব: :help \@!সেই অংশের আরও তথ্যের জন্য ভিমে দেখুন । অন্যথায় এটি সোজা এগিয়ে, আশা করি, আমার ব্যাখ্যা সহ। আপনার পদ্ধতির সাথে একটি সমস্যা হ'ল যদি A.পাঠ্যটিতে " " ঘটে থাকে, যদিও এটি বিচ্ছিন্ন চিহ্নিতকারী লাইন হিসাবে না, এটি বিভক্ত হবে যেন এটি মূলত একটি চিহ্নিতকারী। অনুশীলনে এটি সমস্যা নাও হতে পারে (আপনার "আসল" ফাইলটি কেমন লাগে তা আমি জানি না) তবে সাধারণভাবে সচেতন না হলে সাধারণভাবে এটি অযাচিত আচরণের কারণ হতে পারে।
ড্যানিয়েল অ্যান্ডারসন

@ ভিমনুব: আমি আমার উত্তরটি আবার পড়েছি এবং যদি আপনি :%s///সিনট্যাক্সের সাথে পরিচিত না হন : এটি ভিমে একটি "অনুসন্ধান এবং প্রতিস্থাপন" বাক্য গঠন রয়েছে। :কমান্ডটি শুরু করে, %পুরো বাফারটিকে পরিসীমা হিসাবে নির্দিষ্ট করে, sপ্রতিস্থাপন শুরু করে। /প্যাটার্ন ডিলিমিটার (অন্য কোনও চরিত্র ব্যবহার করা যেতে পারে তবে /এটি "স্ট্যান্ডার্ড")। প্রথমটি /অনুসন্ধানের প্যাটার্নটি শুরু করে, দ্বিতীয়টি প্রতিস্থাপনের ধরণ এবং তৃতীয়টি এটি শেষ করে। ট্রেলিং মডিফায়ারগুলি কেস সংবেদনশীলতা নির্দিষ্ট করার জন্য উপলভ্য হয় ইত্যাদি \1অনুসন্ধান প্যাটার্নে গ্র্যাবড গ্রুপকে উপস্থাপন করে। ফাইলের সাথে :%s/foo/bar/প্রতিস্থাপন করে । foobar
ড্যানিয়েল অ্যান্ডারসন

আপনার সাহায্যের জন্য অসংখ্য ধন্যবাদ. আমার এই গবেষণাটি করা দরকার \ @! অংশ হিসাবে আমি বুনিয়াদি অনুসন্ধান প্রতিস্থাপন এবং বেসিক regexp সঙ্গে পরিচিত।
ভিম নুব

1
@ রেমান: আমি অবিলম্বে যেভাবে সোজা-ফরোয়ার্ডের কথা ভাবি তা পরবর্তী বিশ্বব্যাপী প্যাটার্ন ম্যাচের মতো চলছে :%s/^A\.//। উত্তরের পদ্ধতিটি ^A\.নিদর্শনগুলি নিজেরাই ক্যাপচার করে না (বরং তাদের অনুপস্থিতি), সুতরাং এটি স্ট্রিংগুলি সুস্পষ্ট উপায়ে পরিবর্তন করতে পারে না।
ড্যানিয়েল অ্যান্ডারসন

7

এটিও কাজ করে (যখন প্রথম লাইনটি শুরু হবে A.)

:v/^A/-1j!

যে কাজ করে! খুশী হলাম। +1
জাস্টার

হ্যাঁ, সত্যই, এবং দুটি কৌশল আমার কাছে নতুন, বিশ্বব্যাপী অ্যান্টি-প্যাটার্ন ম্যাচের পরে (ভি): যোগ দেওয়ার জন্য 'জ' এবং '!' একটি স্থান যোগ না করে যোগদানের জন্য। ধন্যবাদ.
ফোর্টোবাইজ

@ মিরো বাহ! আমি আপনাকে স্যালুট জানাই স্যার। যদি আপনি এটি ব্যাখ্যা করতে পারেন তবে এটি কেন দুর্দান্ত কাজ করে! .. এছাড়াও আমাকে মাঝে মধ্যে ট্যাব চরিত্রের সাথে লাইনগুলি সংহত করতে হয়েছিল ... সুতরাং আমি যা করলাম তা ছিল প্রতিটি লাইনের / $ / \ t / g ট্যাব বৈশিষ্ট্য হিসাবে যোগ করার আগে উপরের কমান্ড .. আরও ভাল উপায়
ihightower
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.