কীভাবে কেবল ভিজ্যুয়াল নির্বাচনের মধ্যে প্রতিস্থাপন করবেন?


27

লাইনের অন্য কোথাও নয়, কেবল ভিজ্যুয়াল নির্বাচনের মধ্যে কোনও চরিত্রকে প্রতিস্থাপন করার জন্য কীভাবে ভিএম পাবেন ? উদাহরণ:

  • লাইন: int arr[] = { 00 01 02 03 04 05 05 /* ... lots more like this*/};
  • ভিজ্যুয়াল নির্বাচন: { 00 01 02 03 04 05 05 /*... lots more like this*/}
  • COMMAND: :'<,'>s/\ /\,0x/g
  • প্রত্যাশিত: int arr[] = {0x00,0x01,0x02,0x03 /* and so on*/};

তবে এই ক্রিয়াগুলি সম্পাদন করার পরে, আসল ফলাফলটি হ'ল:

int,0xarr[],0x=,0x{0x00,0x01,0x02,0x03 /* and so on*/};

প্রত্যাশিত ফলাফল তৈরি করার জন্য কি উপরের কমান্ডটি সংশোধন করার কোনও উপায় আছে? না না '<এবং '>পরিসর অনুসন্ধান যার উপর সংজ্ঞায়িত (এবং প্রতিস্থাপন) কাজ কমান্ড?


2
আমি উত্তরটি জানি না, তবে আমি জানি যে :substituteরেখার ভিত্তিতে একটি লাইনে অপারেটরগুলি, যা আপনার উদাহরণে আপনি কী দেখছেন তা ব্যাখ্যা করে।
কার্ল ইঙ্গভে লেরভেগ

উত্তর:


32
:'<,'>s/\%V\ /\,0x/g

%Vভিজ্যুয়াল অঞ্চলের ভিতরে মেলে। দেখুন :help %V


1
এটি উল্লেখ করা উচিত, যে এই সমাধানটি কেবল যাচাই করে, ম্যাচের শুরুটি ভিজ্যুয়াল নির্বাচনের অভ্যন্তরে
খ্রিস্টান ব্র্যাব্যান্ড

7

এর \%Vজন্য রয়েছে, দেখুন :h %V:

\% ভী

ভিজ্যুয়াল অঞ্চলের ভিতরে মিল M যখন ভিজ্যুয়াল মোড ইতিমধ্যে সেই অঞ্চলে ম্যাচ বন্ধ করে দেওয়া হয়েছে যা জিভি পুনরায় নির্বাচন করবে। এটি একটি / শূন্য প্রস্থের ম্যাচ। পুরো প্যাটার্নটি ভিজ্যুয়াল অঞ্চলের ভিতরে রয়েছে তা নিশ্চিত করার জন্য এটিটিকে প্যাটার্নের শুরু এবং শেষের দিকে রাখুন , যেমন:> /\%Vfoo.*bar\%V

কেবল নির্বাচনের fooমাধ্যমে প্রতিস্থাপন করতে bar, ব্যবহার করুন:

:'<,'>s/\%Vfoo\%V/bar/
:'<,'>s/\%Vfoo\%V/bar/g
:'<,'>s/\%Vfoo\%V/bar/cg

এই বিশেষ ক্ষেত্রে:

:'<,'>s/\%V\ \%V/\,0x/g

4

আপনি যদি ভিজ্যুয়াল ব্লকের মধ্যে বিকল্প স্থাপন করতে চান তবে আপনি vis.vimপ্লাগইনটি ব্যবহার করতে পারেন ।

http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block

স্থাপন করা:

Http://www.drchip.org/astronaut/vim/index.html#VIS থেকে vis.vba.gz ডাউনলোড করুন

# Open vis.vba.gz in Vim 7.1 or later.
vim vis.vba.gz

# Source the open file.
:so %

# Quit Vim
:q

একবার ইনস্টল:

ctrl-v to enter visual-block mode
Move to select the block you want
:B s/pattern/newtext/

আপনি যখন টাইপ করবেন :B, আপনি এটি দেখতে পাবেন

:'<,'>B 

এটি ঠিক আছে, এটি কেবল vim বলার অপেক্ষা রাখে না যে কমান্ডটি বর্তমানে নির্বাচিত ভিজ্যুয়াল ব্লকের জন্য প্রযোজ্য হবে।

আরও ভাল, আপনি ভিজ্যুয়াল ব্লকে যে কোনও প্রাক্তন কমান্ড সম্পাদন করতে পারেন, কেবল প্রতিস্থাপন নয়। উদাহরণস্বরূপ :B !sort

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