সাবস্টিটিউশন কমান্ডের প্রাকদর্শন কীভাবে পাবেন?


9

বেশিরভাগ সময় আমি নিজেকে একটি প্রতিস্থাপন সম্পাদনের প্রয়োজন বলে মনে করি যা একটি বড় ফাইল জুড়ে এবং অ-তুচ্ছ অনুসন্ধান এবং প্রতিস্থাপনের অভিব্যক্তিগুলির সাথে মিলগুলি মিলবে।

উদাহরণস্বরূপ, বলুন আমার মতো কিছু ফাংশন কল রয়েছে okFunction(arg1, arg2 arg3)। আরোগুলি অবশ্যই প্রতিটি ফাংশন কলের সাথে পৃথক হবে। এখন বলুন আমি একটি আরও ভাল ফাংশন আবিষ্কার করেছি যার প্রয়োজন নেই arg2। আমি সহজেই এর সাথে পুরো ফাইলটি সামঞ্জস্য করতে পারি

:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc

ধারণাগতভাবে সহজ হলেও, আমি নিশ্চিত নই যে এটির পরিবর্তে দীর্ঘতর প্যাটার্নটিতে আমি সিনট্যাক্সটি ঠিক পেয়েছি। cপতাকা সত্যিই এখানে সাহায্য করে, কিন্তু সমস্যা হল যখন নিশ্চিতকরণ জন্য জিজ্ঞাসা তেজ দেখাবে না কি ম্যাচ দিয়ে প্রতিস্থাপিত হবে। মানে, এটি প্রতিস্থাপনের প্রকাশটি প্রদর্শন করবে, তবে মূল্যায়িত ফলাফল নয় not যদি আমি বিকল্পটির সাথে নিশ্চিত করে রাখি y, ভিম সাথে সাথে পরের ম্যাচে ঝাঁপিয়ে পড়বে এবং আমি কোনও ভুল করেছি কিনা তা দেখার জন্য আমি অভুক্ত হব না।

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

সুতরাং, বিকল্প কমান্ডের বিষয়ে নিশ্চিতকরণ জিজ্ঞাসা করার সময় প্রতিস্থাপনের অভিব্যক্তিটি মূল্যায়ন করার জন্য ভিম পাওয়ার কোনও উপায় আছে কি?


2
এটি ভিআইএম-বাগ ট্র্যাকারের একটি হুইসলিস্ট আইটেম (দুঃখিত এটি বর্তমানে এটি খুঁজে না)
খ্রিস্টান ব্র্যাব্যান্ড ডেস্ক

2
এটির মূল্যের জন্য আমি সাধারণত প্রথম লাইনে প্রতিস্থাপনটি ব্যবহার না করে প্রতিস্থাপনের জন্য ব্যবহার %করি, ফলাফলটি আমি প্রত্যাশা করছিলাম তা হ'ল এবং তারপরে প্রতিস্থাপনটি ব্যবহার করুন %(এটি কেবল কয়েকটি কীস্ট্রোক :<up><c-b>%:)। স্পষ্টতই একটি প্রাকদর্শন বিকল্প তার চেয়ে অনেক বেশি দক্ষ হবে। যদিও কোনও প্যাচ পাওয়া যায় না, এই বিকল্পটির সাহায্যে কেউ কোনও প্রতিস্থাপনের কাজটি একটি উইমস্ক্রিপ্ট ফাংশনটিতে আবদ্ধ করতে পারে তবে এটি প্রচুর পরিশ্রমের মতো মনে হচ্ছে ...
স্ট্যাটক্স

2
@ ক্রিশ্চিয়ান ব্র্যাব্যান্ড এটি খুঁজে পেয়েছে । এটি এখনও শ্রেণিবদ্ধ অগ্রাধিকার সহকারে ...
ভিজিটর ইজি

2
@ ভিজিটইজি যে আমি ভাবছিলাম তা নয়। তবে এটি আসলে গুরুত্বপূর্ণ নয়, যেহেতু এটি বর্তমানে সম্ভব নয়। নিওভিম 'ইনকমন্ড' বিকল্পটি সরবরাহ করে, এটি কাজ করতে পারে (বা না, আমি এখন সত্যিই করি না)
ক্রিশ্চিয়ান ব্র্যাব্যান্ড ডেস্ক

অশুভ বিকল্প প্রতিস্থাপন; যদিও এটি এটি করে তা আমি জানি না।
জেরেমিয়া

উত্তর:


2

একটি workaround হ'ল ম্যাক্রোস। সমস্ত সমস্যার ক্ষেত্র হাইলাইট করুন এবং একসাথে এক লাইনে প্রতিস্থাপন করুন। তারপরে সিদ্ধান্ত নিন আপনি এটি চান কিনা। একবার আপনার nপরের অঞ্চলে হয়ে গেল।

আপনার ক্ষেত্রে বিশেষভাবে:

  1. অঞ্চলগুলির জন্য অনুসন্ধান করুন: /\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))
  2. একটি ম্যাক্রো রেকর্ডিং শুরু করুন qq
  3. প্রয়োগ করা :s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/g
  4. ম্যাক্রো রেকর্ডিং বন্ধ করুন q
  5. হয় পূর্বাবস্থায় ফেরান ( u) অথবা পরবর্তী অনুসন্ধান ফলাফল ( n) এ যান।
  6. ম্যাক্রো প্রয়োগ করুন @q
  7. প্রয়োজনীয় পদক্ষেপ 5 এবং 6 পুনরাবৃত্তি করুন।

অবশ্যই আপনি যা খুঁজছিলেন তা পুরোপুরি নয়, তবে এটি সাধারণত আমি করি what


চমৎকার! আমি কখনই বুঝতে পারি নি যে আপনি /এটির সাথে অনুসন্ধান করার সময় একটি ভিজ্যুয়াল নির্বাচন হিসাবেও আচরণ করে - দুর্দান্ত।
the_velour_fog

"এটি_ভালোয়ার_ফোগ" /... ভিজ্যুয়াল নির্বাচন হিসাবে আচরণ করে "" আসলে তা হয় না। এটি কাজ করার কারণটি হ'ল :s//বর্তমান লাইনে কাজ করে এবং ব্যবহার nআপনাকে পরবর্তী ঘটনাতে নিয়ে যায় ।
টাম্বলার 41

1
যদি আপনি এর জন্য কোনও প্যাটার্ন নির্দিষ্ট না করেন তবে :s/pattern/replacementএটি সর্বশেষ অনুসন্ধানের স্ট্রিংটি ব্যবহার করবে, তাই 3 য় ধাপে আপনি :s//betterFunction(\1, \3)/gকিছু টাইপিং সংরক্ষণ করার জন্য আবেদন করতে পারেন ।
হেইগিন

@ টাম্বলার 41 আহ, স্পষ্ট করার জন্য ধন্যবাদ। হ্যাঁ আমি অনুসন্ধানের এই প্রাথমিক কৌশলটিও করি , তারপরে ম্যাক্রো প্রয়োগ করি, আমি সাধারণত প্রথমে প্রথমে আরগলিস্টটি জনপ্রিয় করি এবং :vimgrep /pattern/ ##তারপরে ম্যাক্রো প্রয়োগ করি , যদি আমার প্যাটার্নটি প্রকৃতপক্ষে ধারাবাহিকভাবে মিলে যায় এবং ম্যাক্রো জিনিসটি খুব ক্লান্তিকর হয় তবে আমি তাড়াতাড়ি করতে পারি প্রত্যাবর্তন করুন :argdo %s/.../..../gcএবং অপারেশনটির মাধ্যমে উড়ান শুরু করুন
the_velour_fog
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.