ভিমে, ব্রেস / প্যারেনগুলির সাথে মিলে যাওয়ার জন্য পিছনের দিকে অনুসন্ধান করুন


10

আপনারা সম্ভবত বেশিরভাগই জানেন, আপনি %পরবর্তী জোড়যুক্ত ব্রেস / বন্ধনী / পেরেনটি সন্ধান করার জন্য লাইনে ফরোয়ার্ড অনুসন্ধান করতে এবং এর সাথে মিলে যাওয়া সঙ্গীর কাছে যেতে পারেন:

|a|rray[index] = value;
" |e| is the cursor; hit %:
array[index|]| = value;

আমি আশা করছি যে অনুরূপ কী আছে যা লাইনের পিছনে পিছনে অনুসন্ধান করবে যেমন:

array[index] = value|;|
" |;| is the cursor again, hit the key I'm looking for:
array|[|index] = value;

বেশিরভাগ ভিআইএম কমান্ডের পিছনে এবং সামনে উভয়ই থাকে, সুতরাং এটি করা উচিত বলে মনে হয়। এর কোন অংশীদার নেই? যদি তাই হয়, কারণ একবার এটি হয় উপর একটি জোড়া চরিত্র তারা একই কাজ করবে?


এটি লক্ষ করা উচিত যে %কেবল একই লাইনে যুক্ত জোত বন্ধনী অনুসন্ধান করবে না, তবে ফাইলটি আরও নিচে নামবে। আমি বিশেষত পছন্দের কোনও প্রোগ্রামের ভাষায় লুপ ইত্যাদির জন্য এটি পছন্দ করি।
বার্নহার্ড

1
@ বার্নহার্ড হ্যাঁ, তবে কেবল যখন লাইনে একটি ধনুর্বন্ধনী খুঁজে পাওয়া যায়।
কেভিন

আপনি যদি অ্যাডন স্ক্রিপ্টগুলির বিরোধী না হন, ম্যাচিট অ্যাডটন একটি g%কমান্ড সরবরাহ করে যা আপনি যা খুঁজছেন তার অনুরূপ।
jw013

বোকা তবে, আপনার প্রশ্নে বলা হয়েছে যে কেন কোনও অংশীদার নেই তা আপনি জানতে চান। আপনার অর্থ কি "এমন কিছু অংশীদারি রয়েছে যার সম্পর্কে আমি জানিনা?" :)
রিজওয়েল

@ রিজওল ঠিক আছে, আমি এটি বিভক্ত করেছি যাতে এটি আর প্রযুক্তিগতভাবে এটি জিজ্ঞাসা করে না।
কেভিন

উত্তর:


4

আপনি যদি সত্যিই সাধারণ মিলের অক্ষরগুলির জন্য পিছনের দিকে সন্ধান করতে চান তবে আপনি এই- vimস্পেসিফিক কমান্ডগুলির মধ্যে একটি ব্যবহার করতে পারেন :

  • [(... (আগের তুলনাহীন (চরিত্রটিতে যান)
  • [{... (আগের তুলনাহীন {চরিত্রটিতে যান)

এই দুটি কমান্ডের মিল রয়েছে ফরোয়ার্ড অংশীদার:

  • ])... (পরবর্তী মিলের অক্ষরটিতে যান ))
  • ]}... (পরবর্তী মিলের অক্ষরটিতে যান })

#ifdefসি মন্তব্যের জন্য এবং এর জন্য অনুরূপ অন্যান্য আদেশ রয়েছে ।

vimকমান্ডটি ব্যবহার করে আপনি আরও সন্ধান করতে পারেন :help %


আমি এগুলি সম্পর্কে জানি, সমস্যাটি হ'ল তারা তুলনামূলক মিল খুঁজে পাচ্ছে , আমার সাথে ম্যাচিং জোড়গুলি খুঁজে পাওয়া দরকার ।
কেভিন

@ কেভিন: আমি ডক্স (দীর্ঘশ্বাস) ভুল বুঝেছি। অবশ্যই, একবার আপনি ব্যবহার করার %পরে এটি উভয় পথে যায় - মিলিত অংশীদারকে সন্ধান করে। এছাড়াও, যদি কোনও ব্লকের ভিতরে থাকে, তবে উপরের কমান্ডগুলি উপযুক্ত মিল খুঁজে পাবে।
মেই

4

% ম্যাচিং বন্ধনী সন্ধান করুন। আপনি যদি চালু থাকেন (বা are এটি এগিয়ে অনুসন্ধান করবে)।

আপনি যদি} বা) তে থাকেন তবে এটি পিছনের দিকে অনুসন্ধান করবে।

% দিকনির্দেশক নয়, এটি কেবল মেলানো বন্ধনীর সন্ধান করে।


যদি আমি একটি জোড়ার একপাশের পিছনে আছি,% এটির অংশীদার খুঁজে পাবে। যদি আমি কোনও লাইনের শেষে থাকি তবে লাইনের আগে এটি জুটিটি খুঁজে পাবে না।
কেভিন

এটি সঠিক উত্তর নির্বাচন করা উচিত নয়?
জ্যাক

2

আমি শুধু চেষ্টা :map ^] ^%%(সঙ্গে ^]= Ctrl+ + v Ctrl+ + 5এখানে সঙ্গে একটি উপমা যেমন %= Shift+ + 5)।

এটি প্রদত্ত নির্দিষ্ট ক্ষেত্রেটির জন্য কাজ করে, তবে কার্সার থেকে পিছনে সন্ধান না করায় এটি সর্বদা লাইনের প্রথম উন্মুক্ত প্রথম বন্ধনী বেছে নেবে এবং কোনও মিল না পেয়ে লাইনটির শুরুতে আপনার কার্সারটি ছেড়ে দেবে ।


এটি একটি ভাল সমাধান; এটি কুরুচিপূর্ণ এবং সম্ভবত সরল করার জন্য প্রচুর জায়গা রয়েছে তবে আমি মনে করি শব্দার্থবিজ্ঞানগুলি ঠিক ঠিক আছে (কোনও খোলা পেরেন না থাকলে কার্সারটি সরান না এবং বর্তমান কলামের আগে প্রথম উন্মুক্ত পেরেনে চলে যায়)।

:map ^] ^[:call search("[({[]", "bes", line("."))^M

জন্য

  • ^]= Ctrl+ v Ctrl+5
  • ^[= Ctrl+v Esc
  • ^M= Ctrl+v Return

যদি কোনও লাইনে দুটি অ-নেস্টেড জোড়া থাকে তবে এটি বেশিরভাগই এক হবে না তবে এটি অবশ্যই এখন পর্যন্ত সেরা পরামর্শ, ধন্যবাদ।
কেভিন

এটি কেবল একটি ব্লকের মধ্যে কাজ করবে, তাই না? যদি তাই হয়, তবে [(ঠিক পাশাপাশি কাজ করবে এবং একটি প্রয়োজন হয় না map
মেই

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