ভিআইএম: একের পর এক চলক মান লাইন পরিবর্তন করা


3

আসুন আমি নীচের টাইপ করা বলুন

a + 1 =b and a+1=c

আমার এর মতো আরও 2 টি এক্সপ্রেশন দরকার তবে আমি 1 থেকে 3 এর মান বাড়াতে চাই তাই আমি এক্সপ্রেশনটি আরও 2 বারের উপরে পেস্ট করেছি এবং ম্যানুয়ালি 1 টি বৃদ্ধি পেয়েছি তাই এখন আমার ফাইলটি এরকম দেখাচ্ছে

a + 1 =b and a+1=c
a + 2 =b and a+2=c
a + 3 =b and a+3=c

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


এছাড়াও ভি এবং ভিমে দেখুন , আমাদের বোন সাইটটি ভিমে উত্সর্গীকৃত!
মুড়ু

উত্তর:


3

ম্যাক্রো ব্যবহারের পাশাপাশি আপনি অনুসন্ধান এবং প্রতিস্থাপনও ব্যবহার করতে পারেন

yy2p
:%s/\v\d+/\=line('.')/g
  • yy2p লাইনটি ইয়াঙ্কস করে এবং এটি দু'বার পেরিয়ে গেছে
  • :%s অনুসন্ধান এবং প্রতিস্থাপন tarts
  • \v\d+ সমস্ত সংখ্যাযুক্ত অক্ষরের সন্ধান করে
  • \=line('.') সমস্ত ম্যাচের প্রতিস্থাপন হিসাবে লাইন ফাংশনটি মূল্যায়ন করে

তবুও অন্য একটি বিকল্প

:pu! =map(range(1,3), 'printf(''a + %d =b and a+%d=c'', v:val, v:val)')

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


ধন্যবাদ তবে সত্যই, আমি অন্ধভাবে আপনার ম্যাক্রো বা অনুসন্ধান এবং সমাধানটি প্রতিস্থাপন করতে পারি তবে মানচিত্রের সমাধানটি আমার স্মৃতিতে কমিয়ে আনতে পারি না।
লিভেন কের্মসেকার্স

মানচিত্র সমাধান সত্যিই ঝরঝরে!
লিনব

4

ভিমে একটি সংখ্যা স্বয়ংক্রিয়ভাবে বৃদ্ধি করার উপায় রয়েছে: <c-a>(বা Ctrla) সাধারণ মোডে।

সুতরাং, ম্যাক্রো ব্যবহার করে, ভিমে সংখ্যার ক্রমবর্ধমান ক্রমটি তৈরি করা মোটামুটি সহজ। যুক্ত লাইনে শুরু করুন a+ 1 =b and a+1=cএবং:

qq
Yp^Aw^A
q

^Aটিপে দাঁড়াতেন Ctrla। তারপরে @qম্যাক্রোর পুনরাবৃত্তি করতে ব্যবহার করুন । সুতরাং 4@qউত্পাদন করা হবে:

a + 1 =b and a+1=c
a + 2 =b and a+2=c
a + 3 =b and a+3=c
a + 4 =b and a+4=c
a + 5 =b and a+5=c
  • qqqনিবন্ধে ম্যাক্রো ( ) সংরক্ষণ শুরু করে q
  • Y বর্তমান লাইনে ইয়াঙ্কস (লাইনওয়াইজ)
  • p পেস্ট করে এবং আপনি পরবর্তী (পূর্ববর্তী বর্তমান) লাইনের শুরুতে শেষ করেন।
  • <c-a> আপনি লাইনে প্রথম সংখ্যাটি বাড়িয়েছেন (এবং কার্সার এটিতে সরানো হবে)
  • সুতরাং আপনি পরের শব্দটিতে আবার সরানো এবং আবার ( w<c-a>) বৃদ্ধি করুন , এবার দ্বিতীয় সংখ্যাটিকে প্রভাবিত করবেন।

2

অনেকগুলি ভিএম বিতরণ বিল্টিন পার্ল সমর্থন নিয়ে এসেছিল support

যদি এটি আপনার ক্ষেত্রে হয় তবে আপনি এটি করতে পারেন:

:perldo s/a\+1=b and a\+1=c/sprintf('a+%d=b and a+%d=c',++$aux,$aux)/e

(আমি সম্ভবত উদাহরণে ফাঁকা স্থান পরিবর্তন করেছি ...)

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