একটি নির্বাচিত পাঠ্য-ব্লকে আংশিকভাবে কীভাবে পাঠ্য প্রতিস্থাপন করবেন?


14

আমার সমস্যার জন্য একটি সুন্দর শিরোনাম পাওয়া সহজ নয়।

আমি একটি পাঠ্য-ব্লকের সামনে সন্নিবেশ সম্পর্কে সচেতন:

Ctrl- v লাইন টাইপ পাঠ্য নির্বাচন I করুন ESC

এখন আমি এটি করতে চাই তবে আমার ব্লক নির্বাচনের একটি অংশ প্রতিস্থাপন করে। বর্তমানে আমি দুটি অপারেশন করছি

Ctrl- শুরু করতে ফিরে যেতে v ব্লক নির্বাচন করুন x

আমি উপরে উল্লিখিত ক্রম অনুসরণ করে।

এই ব্লকটি কেবল একবারে ( Ctrl- v) নির্বাচন করে একত্রিত করার কোনও উপায় আছে ?

এখানে একটি ছোট উদাহরণ:

আমি নীচের ব্লকটি রূপান্তর করতে চাই

1  text
2  text
3  text
4  text
5  text

মধ্যে

new text 
new text 
new text 
new text 
new text

কেবল একটি "অপারেশন" করছেন।


1
আপনি যা চান তা আমি 100% নিশ্চিত নই, সম্ভবত একটি আসল উদাহরণ সাহায্য করবে (আপনার যা যা বনাম যা আপনি চান)। আপনি জিভি সম্পর্কে সচেতন? এটি সর্বশেষ চাক্ষুষ নির্বাচনটি পর্যালোচনা করে এবং এখানে সহায়তা হতে পারে।
ফিলিপফ্র্যাঙ্ক

উত্তর:


21

cপরিবর্তে আপনার ব্লকটি নির্বাচনের পরে টাইপ করা নির্বাচন ব্লকের xপাঠ্য সরিয়ে ফেলবে এবং সন্নিবেশ মোডে প্রবেশ করবে। একবার আপনি কিছু টাইপ করুন এবং সন্নিবেশ মোডে প্রস্থান করলে আপনার প্রতিটি লাইনে একই পরিবর্তন হওয়া উচিত।

চেষ্টা

Ctrl- v- ব্লক নির্বাচন করুন - c- যা সন্নিবেশ করান -Esc


1
    1
   1 1
  1   1
 1111111
 1     1
 1     1
 1     1

উপরের মত তিনটি পৃথক ব্লক বর্ণের একটি সারি চিত্র করুন। ^Vউপরেরটি নির্বাচন করে, আমি Aঅসম দৈর্ঘ্যের লাইনের কারণে সারির শেষ অক্ষরে সমস্তগুলিকে পরিবর্তন করতে পারি না । পূর্ববর্তী ব্লক অক্ষরগুলি :s/\%V1/T/g "পূর্ববর্তী ব্লক চিঠিটি '1 এর তৈরি টি ছিল। /T/যা কিছুতে পরিবর্তন করুন fine

তবে উপরে বর্ণিত সর্বশেষ ব্লক বর্ণটি নির্বাচন করা সমস্ত '1'কে' এ'-এর বিন্দুতে পরিবর্তন করেছে, এবং বাকীটি রয়ে গেছে।

* সবচেয়ে সংক্ষিপ্ত রেখা।

সমস্ত লাইন একই দৈর্ঘ্য করতে আমি তাদের স্পেস দিয়ে প্যাড করেছি। (আমি ভিমে নতুন, তাই আমি নিশ্চিত যে আরও ভাল স্ক্রিপ্ট লেখা যেতে পারে।)

দ্রষ্টব্য: A এর শিখরটি 2 লাইনে শুরু হয়েছিল।

let Maxlen = 0
" Find longest line
for i in range(2,8)
    let t = getline(i)
    let a = strlen(t)
    if a > Maxlen
        Maxlen = a
    endif
endfor

" Append spaces 'til all lines are the same length.
for i in range(2,8)
    let t = getline(i)
    let a = strlen(t)
    if a < Maxlen
        let b = Maxlen - a
        execute "normal!" . i . "gg0" . b . "A "
    endif
endfor

এর পরে, :s/\%V1/T/g সারির শেষ ব্লক চিঠিতে বিজ্ঞাপন হিসাবে কাজ করেছে।

PS আমি পড়েছি যে executeউপরের লাইনটি বিন্দু ছাড়া কাজ করা উচিত, তবে এটি আমার পক্ষে কার্যকর হয়নি।


এক্সিকিউট করা লাইন, ব্লক চিঠির সারি i এর শুরুতে গিয়ে লাইনের শেষের দিকে খ স্পেস যুক্ত করুন। 'বি' হ'ল বর্তমান লাইন এবং দীর্ঘতম রেখার মধ্যে দৈর্ঘ্যের পার্থক্য।
রন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.