পারি এই তেজ মধ্যে সম্পন্ন করা যেতে পারে?
আমার অর্থ হ'ল: 'ব্যাডজব' অনুসন্ধান করা এবং 'গুডজব'-এর পরিবর্তে নিম্নলিখিত প্রতিস্থাপনগুলি করতে হবে
'badjob' -> 'goodjob' 'BadJob' -> 'GoodJob' 'badJob' -> 'goodJob' 'BADJOB' -> 'GOODJOB'
পারি এই তেজ মধ্যে সম্পন্ন করা যেতে পারে?
আমার অর্থ হ'ল: 'ব্যাডজব' অনুসন্ধান করা এবং 'গুডজব'-এর পরিবর্তে নিম্নলিখিত প্রতিস্থাপনগুলি করতে হবে
'badjob' -> 'goodjob' 'BadJob' -> 'GoodJob' 'badJob' -> 'goodJob' 'BADJOB' -> 'GOODJOB'
উত্তর:
রহিত করুন.ভিম ব্যবহার করুন :
:%S/badjob/goodjob/g
BadJob
এবং আমি এটির সাথে প্রতিস্থাপন করতে চাই তবে GoodJob
আমি ব্যবহার করতে পারি না %S/badjob/goodjob/g
। এটি একটি ম্যাচ সনাক্ত করতে ব্যর্থ।
%S/BadJob/GoodJob/g
কমান্ড মিশ্র-কেস মোডে স্যুইচ করবে এবং ওপির দেওয়া সমস্ত বিকল্পগুলি করবে।
আপনি যে ধরণের সমাধানটি সন্ধান করছেন এটি আমি জানি না ... তবে আমি এটি ব্যবহার করেছি: কেপকেস.ভিম v
ভিমে অন্যথায় কোনও সমর্থন নেই ...
অবশ্যই আপনি পারেন
:s/\cbad/\= strpart(submatch(0), 0 ,1) == toupper(strpart(submatch(0), 0, 1)) ? "GOOD" : "good"/
পুনশ্চ. আমি অনুমান করে রাখছি কেপকেস.ভিম কিছু অনুরূপ যুক্তি আবদ্ধ করে :)
:set ignorecase
। 2. Bad
পরিবর্তে দ্বারা প্রতিস্থাপিত করা GOOD
হবে Good
। 3. " job
" প্রশ্ন অংশ, উপেক্ষা করা হয়, যাতে এই প্রতিস্থাপন করবে lambada
→ lamgooda
। এই বাগগুলির জন্য সংশোধন এবং ব্যাখ্যা এবং আমার উত্তরে কয়েকটি অন্যান্য বিষয় । (এছাড়াও লোভ!)
আপনি কেবল এটিকে আটকান এবং খাপ খাইয়ে নিতে পারেন:
(আপনি যদি সময়ে সময়ে এটি করেন তবে আপনি এই একত্ববাদটির পরিবর্তে একটি প্লাগইন চাইবেন But তবে যারা কিছুটা তাড়াহুড়োয় এবং কেবল একবার প্রয়োজন, এটি একটি দ্রুত হ্যাক আপনার পেস্ট আনন্দ জন্য :)
:%s/\cbad\zejob/\= ( submatch(0)[0] is# toupper(submatch(0)[0]) ? 'G' : 'g' ) . ( submatch(0)[1] is# toupper(submatch(0)[1]) ? 'OOD' : 'ood' )
অনুসন্ধানের প্যাটার্ন বাদে, আপনাকে প্রতিস্থাপন কোডের চারটি '
স্ট্রিং '
সম্পাদনা করতে হবে: অংশগুলি গা bold়ভাবে সম্পাদনা করুন :
:% s / \ c খারাপ \ ze জব / \ =
(সাবম্যাচ (0) [0] হ'ল # টপার (সাবম্যাচ (0) [0])? ' জি ': ' জি ')।
(Submatch (0) [1] # এর toupper (submatch (0) [1]) '? OOD ': ' ood ')
পেস্ট করার জন্য এই 'কমলা' সংস্করণটি ব্যবহার করবেন না কারণ এর লাইনব্রেক অক্ষরগুলি কমান্ডটিও ভেঙে দেবে।
/\ze
ইতিবাচক চেহারা হিসাবে চিহ্নিত করার জন্য ভিম রেজেক্স সিনট্যাকটিক চিনি: পরের প্যাটার্নটি \ze
চেক করা হয়েছে, তবে প্রতিস্থাপিত নয়।
is#
?? আমাকে ব্যাখ্যা করুন ... (আগ্রহী হলে।)
#
(এছাড়াও ==#
এবং অন্যান্য ) কেস সংবেদনশীলতা প্রয়োগ করে। অন্যথায়, :set ignorecase
(যা আমি ব্যবহার করি, কারণ এটি দরকারী জন্য প্রয়োজনীয় :set smartcase
), ভিম বিবেচনা করবে 'a' == 'A'
!!
ক্রেজি যেমন হয় তেমনি আমাদের অবশ্যই এটির জবাবদিহি করা উচিত: কারণ এটি ব্যবহারকারী-সেটিংস-নির্ভর, ==
তাই কখনই ব্যবহার করা উচিত! (এটি আসলে যেখানে আপনি চান সেখানে বাদে) ==#
পূর্ণসংখ্যার সাথে তুলনা করার সময়ও আমি ব্যবহারের প্রস্তাবটি অনুসরণ করব : http://learnvimscriptthehardway.stevelosh.com/chapters/22.html#code-defensely
is#
পরিবর্তে ==#
রক্ষণাত্মকভাবে কোডিংয়ের অন্য উপায়: এটির প্রকারের সুরক্ষা উন্নত করে: http://google.github.io/styleguide/vimscriptguide.xml?showone=Type_checking# টাইপ_চেকিং
স্ট্রিং আক্ষরিকের সাথে তুলনা করার সময় এটি ব্যবহার করা উচিত।
'single-quoted'
"double quoted"
স্ট্রিংয়ের পরিবর্তে আরেকটি ভাল অনুশীলন: http://google.github.io/styleguide/vimscriptguide.xml?showone=Strings#Strings
এইচটি @ এফসি। - এই উত্তর তাদের উপর তৈরী করে উত্তর , কয়েক ভুলত্রুটি ফিক্সিং।
কিপকেস প্লাগইনের একটি বিকল্প হ'ল স্মার্টকেস - মূল কেস রাখার সময় শব্দের প্রতিস্থাপন । (খারাপ রেটিং দিয়ে নিজেকে নিরুৎসাহিত করবেন না।)
:%s/file\A\?size/\=SmartCase("LastModifiedTime")/ig
?
:SmartCase
কমান্ডটি ব্যবহার করতে পারেন । আমি আমার নিজের কাঁটাতে এটি প্রসারিত করেছি । নোট করুন যে এর জন্য নির্ভরতা হিসাবে ইনগো-লাইব্রেরি প্রয়োজন ।