ভিম মধ্যে কেস সংরক্ষণের বিকল্প


154

পারি এই তেজ মধ্যে সম্পন্ন করা যেতে পারে?

আমার অর্থ হ'ল: 'ব্যাডজব' অনুসন্ধান করা এবং 'গুডজব'-এর পরিবর্তে নিম্নলিখিত প্রতিস্থাপনগুলি করতে হবে

'badjob' -> 'goodjob'  
'BadJob' -> 'GoodJob'  
'badJob' -> 'goodJob'  
'BADJOB' -> 'GOODJOB'

16
এটি একটি ভিম বৈশিষ্ট্য হওয়া উচিত। এটা এত জ্ঞান করে তোলে।
বাখ

উত্তর:


120

রহিত করুন.ভিম ব্যবহার করুন :

:%S/badjob/goodjob/g

13
আমরা টিম পোপের প্রাপ্য নই।
অ্যান্ড্রু কিটন

1
এই প্লাগইনটি আমার পক্ষে কাজ করে না বলে মনে হচ্ছে। যদি আমি একটি শব্দ পছন্দ করি BadJobএবং আমি এটির সাথে প্রতিস্থাপন করতে চাই তবে GoodJobআমি ব্যবহার করতে পারি না %S/badjob/goodjob/g। এটি একটি ম্যাচ সনাক্ত করতে ব্যর্থ।
রায়মুনসন

@ রায়মুনসন আপনার যা করা দরকার তা হ'ল:, তারপরে সাবভার্ট %S/BadJob/GoodJob/gকমান্ড মিশ্র-কেস মোডে স্যুইচ করবে এবং ওপির দেওয়া সমস্ত বিকল্পগুলি করবে।
শিবামস

28

আপনি যে ধরণের সমাধানটি সন্ধান করছেন এটি আমি জানি না ... তবে আমি এটি ব্যবহার করেছি: কেপকেস.ভিম v

ভিমে অন্যথায় কোনও সমর্থন নেই ...


11

অবশ্যই আপনি পারেন

:s/\cbad/\= strpart(submatch(0), 0 ,1) == toupper(strpart(submatch(0), 0, 1)) ? "GOOD" : "good"/

পুনশ্চ. আমি অনুমান করে রাখছি কেপকেস.ভিম কিছু অনুরূপ যুক্তি আবদ্ধ করে :)


হ্যাঁ 2007 এর পর থেকে এটি:% সাবস্টিটিউস কেস / \ সিডাবজব / গুডজব / জি ^^
লুক হার্মিট

GVim 7.2 থেকে অর্থ? আমি gVim 7.1 (12-মে -2007) এ চেষ্টা করেছি এবং এটি কার্যকর হয় না :(
এফসি

না, আমি 2007 সালে প্লাগইনে সাবস্টিটিউসকেস কমান্ড যুক্ত করেছি That's সবই। প্লাগইনটি vim.org এ উপলব্ধ এবং বেশিরভাগ প্লাগইন সহ এটি যথারীতি ভিমে পাঠানো হয় না।
লুক হার্মিটে

1. ব্যবহারকারী ব্যর্থ হলে এটি ব্যর্থ হয় :set ignorecase। 2. Badপরিবর্তে দ্বারা প্রতিস্থাপিত করা GOODহবে Good। 3. " job" প্রশ্ন অংশ, উপেক্ষা করা হয়, যাতে এই প্রতিস্থাপন করবে lambadalamgooda। এই বাগগুলির জন্য সংশোধন এবং ব্যাখ্যা এবং আমার উত্তরে কয়েকটি অন্যান্য বিষয় । (এছাড়াও লোভ!)
অ্যারন থোমা

7

আপনি কেবল এটিকে আটকান এবং খাপ খাইয়ে নিতে পারেন:
(আপনি যদি সময়ে সময়ে এটি করেন তবে আপনি এই একত্ববাদটির পরিবর্তে একটি প্লাগইন চাইবেন 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


এইচটি @ এফসি। - এই উত্তর তাদের উপর তৈরী করে উত্তর , কয়েক ভুলত্রুটি ফিক্সিং।


4

আপনি যদি কয়েকটি সম্ভাব্য মূলধনের সাথে কেবল একটি সঠিক (কেস-স্বতন্ত্র) স্ট্রিংয়ের সাথে মেলে, তবে অন্য সম্ভাবনাটি হ'ল:

:s/abc/\={'abc':'xyz','Abc':'Xyz'}[submatch(0)]/i

2

কিপকেস প্লাগইনের একটি বিকল্প হ'ল স্মার্টকেস - মূল কেস রাখার সময় শব্দের প্রতিস্থাপন । (খারাপ রেটিং দিয়ে নিজেকে নিরুৎসাহিত করবেন না।)


1
কমান্ডগুলি টাইপ করতে স্মরণ করা কঠিন এবং ক্লান্তিকর হওয়ার কি কোন কৌশল আছে :%s/file\A\?size/\=SmartCase("LastModifiedTime")/ig?
মাইকেল হার্টল

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