ভিমে প্রতিটি লাইনের শেষে পাঠ্য কীভাবে যুক্ত করবেন?


116

ভিমে, আমার কাছে নিম্নোক্ত পাঠ্য রয়েছে:

key => value1
key => value2
key => value1111
key => value12
key => value1122222

আমি প্রতিটি লাইনের শেষে "," যুক্ত করতে চাই। পূর্ববর্তী পাঠ্য নিম্নলিখিত হয়ে যাবে:

key => value1,
key => value2,
key => value1111,
key => value12,
key => value1122222,

কেউ কি জানেন, এটা কিভাবে করে? এটি সম্পাদন করার জন্য ভিজ্যুয়াল ব্লক মোড ব্যবহার করা কি সম্ভব?


অনুরূপ প্রশ্ন এখানে
glts

উত্তর:


163

এটি ফাইলের প্রতিটি লাইনে এটি করবে:

:%s/$/,/

আপনি যদি পুরো ফাইলটির পরিবর্তে লাইনগুলির একটি উপসেট করতে চান তবে আপনি সেগুলির স্থানে সেগুলি নির্দিষ্ট করতে পারেন %

একটি উপায় হল একটি ভিজ্যুয়াল নির্বাচন করা এবং তারপরে টাইপ করুন :। এটি :'<,'>আপনার জন্য পূরণ করবে , তারপরে আপনি বাকীটি টাইপ করুন (লক্ষ্য করুন আপনার কেবল যোগ করার দরকার আছে s/$/,/)

:'<,'>s/$/,/

4
শেষ সারিতে একটি অতিরিক্ত রয়েছে ', হওয়া উচিত :'<,'>s/$/,/
সিজেজি

কেন দরকার নেই g? ( :'<,'>s/$/,/g)
থরবজর্ন ই কে ক্রিস্টেনসেন

@ থরবজর্ন.কে.ক্রিসটেনসেন কারণ /$/যেভাবেই কেবল একবারেই ম্যাচ হয়।
বুবায়া

156

ভিজ্যুয়াল ব্লক মোড ব্যবহার করে এটি করার একটি উপায় আসলে আছে is কেবলমাত্র $Aভিজ্যুয়াল ব্লক মোডে টিপলে নির্বাচনের সমস্ত লাইন শেষ হয়। সংযুক্ত পাঠ্যটি আপনি চাপ দেওয়ার সাথে সাথে সমস্ত লাইনে উপস্থিত হবে Esc

সুতরাং এটি একটি সম্ভাব্য সমাধান:

vip<C-V>$A,<Esc>

এটি, সাধারণ মোডে, ভিজ্যুয়াল একটি অনুচ্ছেদ নির্বাচন করুন, ভিজ্যুয়াল vipব্লক মোডে স্যুইচ করুন CTRLV, সমস্ত লাইনে $Aএকটি কমা যুক্ত করুন ,, তারপরে Escনিশ্চিত করতে টিপুন press

ডকুমেন্টেশন এ আছে :h v_b_A। এমনকি সেখানে কিভাবে এটি উদাহরণ বিভাগে কাজ করে একটি চিত্রণ হল: :h v_b_A_example


1
না, এটি স্ট্যান্ডার্ড ভিম: ভিজ্যুয়াল ব্লক মোডে কয়েকটি লাইন নির্বাচন করুন (এর সাথে C-V) তারপরে কার্সারটিকে লাইনের শেষের দিকে নিয়ে যান $এবং সেগুলির সাথে যুক্ত করুন A। আপনি ভালবাসবেন :h v_b_A, যা সত্যিই পুরোপুরি।
গ্লিট করে

1
ওহ, আমি কি ঘটছে দেখুন! আমি সাধারণত সন্নিবেশ মোড থেকে প্রস্থান করার জন্য <এসএসএস> এর পরিবর্তে Ctrl-C ব্যবহার করি এবং দৃশ্যত Ctrl-C দিয়ে এটি কার্যকর হয় না! কি অদ্ভুত.
ওয়েরোনিকা

3
আপনি <C-V>ipজায়গায় ব্যবহার করে একটি কীস্ট্রোক সংরক্ষণ করতে পারেন vip<C-V>
অ্যারন থোমা

1
@ অ্যাকোলেড, ভিজ্যুয়াল ব্লক মোডে সেভাবে যায় না এবং কাজ করবে না। <CV> এর পরে আবার হওয়ার দরকার যদি আপনি সেভাবে এটি করেন।
কল্পনাকারী

@ আইমজিনেটর, অদ্ভুত - এটি আমার পক্ষে কাজ করে - অবশ্যই কোনও অ-ডিফল্ট বিকল্পের কারণে হওয়া উচিত। (না 'virtualedit'- আমি এটি পরীক্ষা করেছি)) আমি নিশ্চিত হয়েছি যে এটি একটি ক্লিন ভিমে কাজ করে না। নোটের জন্য ধন্যবাদ!
হারুন থোমা

44

আরেকটি সমাধান, আরেকটি দুর্দান্ত বৈশিষ্ট্য ব্যবহার করে:

:'<,'>norm A,

দেখুন :help :normal


1
@ সুইস, আপনি এই মন্তব্যটি পছন্দ করবেন , তারপর।
রোমেনেল

1
@Swiss, আপনি পারে এছাড়াও মত udioca এক্সপোজ এর উপর :normal। আমি এটি তথ্যপূর্ণ খুঁজে পেয়েছি!
কনার

1
এই সাবরেডডিট সম্পর্কে জানতাম না। ধন্যবাদ।
রোমেনেল


10

বিকল্প কমান্ডটি ভিজ্যুয়াল নির্বাচনের জন্য প্রয়োগ করা যেতে পারে। লাইন ধরে একটি চাক্ষুষ ব্লক করুন যা আপনি পরিবর্তন করতে চান, এবং টাইপ :, এবং যে বিজ্ঞপ্তি কম্যান্ড-লাইন ভালো সক্রিয়া করা হয়: :'<,'>। এর অর্থ হ'ল বিকল্প কমান্ড ভিজ্যুয়াল নির্বাচনের উপর কাজ করবে, যেমন:

:'<,'>s/$/,/

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

:'<,'>s/\s*$/,/

এটি কমা দিয়ে লাইনের শেষের পূর্বের যেকোন পরিমাণ শ্বেতস্থানকে প্রতিস্থাপন করবে, কার্যকরভাবে পিছনের সাদা স্থানটিকে সরিয়ে ফেলবে।

: একই কমান্ডের পরবর্তী 5 লাইনের জন্য লাইনের একটি সীমার যেমন উপর কাজ করতে পারে :,+5s/$/,/সমগ্র বাফার, অথবা: :%s/$/,/


3

আপনি যদি 'কী' দিয়ে শুরু করা লাইনের শেষে ',' যুক্ত করতে চান তবে ব্যবহার করুন:

:%s/key.*$/&,

বা :g/key/s/$/,। দেখুন :help :global
রোমেনেল

2

আমি <M-DOWN>(Alt ডাউন তীর) এ ম্যাপ <DOWN>.করেছি যাতে আমি খুব দ্রুত সিরিজের লাইনে শেষ কমান্ডটি পুনরাবৃত্তি করতে পারি। এই ম্যাপিংয়ের সাহায্যে আমি পারি:

A,<ESC>

এবং তারপরে প্রতিটি লাইনের শেষে কমা যুক্ত করতে বারবার টিপতে Alt টিপুন।
এটি আমার পক্ষে ভাল কাজ করে কারণ এটি লাইনগুলি কী করে এবং কী পরিবর্তন পায় না তার উপর খুব ভাল নিয়ন্ত্রণের অনুমতি দেয়।
(সহজেই পুনরাবৃত্তি করার জন্য অন্যান্য তীরগুলিও একইভাবে ম্যাপ করা হয়েছে .)

আপনার ভিএমআরসিতে আটকানোর জন্য ম্যাপিংয়ের লাইনটি এখানে:

map <M-DOWN> <DOWN>.

1
:%s/$/,/g

line লাইন শেষ ম্যাচ


2
যে যোগ হবে $পাশাপাশি লাইন, শুধু ,
জাইএক্স

2
/gএকটি লাইনে প্রতিটি ঘটনা প্রতিস্থাপন সম্পাদন করতে ব্যবহৃত হয়। কারণ $একটি লাইনে কেবল একটিই আপনি এটি নিরাপদে ফেলে দিতে পারেন।
রোমেনেল

হ্যাঁ, আমার ভুল। এবং / জি হ্যাবিট থেকে, এবং হ্যাঁ এটি alচ্ছিক।
কালহার্ট

1

নিম্নলিখিত ম্যাক্রো আপনার কাজ সম্পাদন করতে ব্যবহার করা যেতে পারে।

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