লাইন বিরতি কাছাকাছি ভিএম অনুসন্ধান


12

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

blah blah blah hello
world blah blah blah

ব্যবহার করার সময় অনুসন্ধান করার সময় /hello world, আমি যা খুঁজছি তা খুঁজে পাই না। সেখানে একটি দ্রুত এবং সহজ উপায় এই অনুসন্ধান আমাকে পাওয়ার জন্য এমন আমি কোথায় হতে চান সংশোধন করার আছে কি? বা আরও ভাল, অনুসন্ধান স্ট্রিংয়ের কোনও জায়গার সাথে কোনও সাদা স্থান (স্পেস, ট্যাব, নতুন লাইন) মেলাতে ভিমকে বলার উপায়?

উত্তর:


15

আরো অনুসন্ধানের পর, দেখে মনে হচ্ছে এই কাজ করতে সবচেয়ে সহজ পদ্ধিতি হল উপায় মত সাথে আছেন \_s। উদাহরণস্বরূপ:

/hello\_sworld

4
hello\_s\+worldঅবশ্যই তাদের মধ্যে যদি একের অধিক হোয়াইটস্পেসের চরিত্র থাকতে পারে তবে আপনি চাইবেন ।
Wodin

5

এই সমস্যাটির সমাধান করা হয়েছিল http://vim.wikia.com / উইকি / অনুসন্ধান_ক্রস_মুটিপল_লাইনগুলিতে । অন্তর্ভুক্ত একটি ফাংশন যা আমার যা প্রয়োজন তা করতে পারে।

function! SearchMultiLine(bang, ...)
  if a:0 > 0
    let sep = (a:bang) ? '\_W\+' : '\_s\+'
    let @/ = join(a:000, sep)
  endif
endfunction
command! -bang -nargs=* -complete=tag S call SearchMultiLine(<bang>0, <f-args>)|normal! /<C-R>/<CR>

তারপরে আপনি একটি মাল্টি-লাইন অনুসন্ধান ব্যবহার করে করতে পারেন :S hello worldএবং এটি এটিকে রূপান্তর করবে এবং এটি hello\s\+worldঅনুসন্ধান করবে। আরেকটি চমৎকার বৈশিষ্ট্য যে এটি অনুসন্ধানের ইতিহাস এই নতুন অনুসন্ধান যোগ হবে। এটি আপনাকে প্রয়োজনে ফিরে যেতে এবং অনুসন্ধানটি সংশোধন করার অনুমতি দেয় q/। এটি বিকল্প সহ ব্যবহার করতেও পারে :%s//new thing/g। এর নেতিবাচক দিকটি হ'ল incsearchএটি সক্ষম করে থাকলে এটি ব্যবহার করে না ।


3

আমার জানা উপায়টি শক্ত নয় তবে এটি কিছুটা ক্লান্তিকর। আপনার অনুসন্ধান ক্যোয়ারীর প্রতিটি স্থান নীচের সাথে প্রতিস্থাপন করুন:

[ \t\n]\+

(এর পরে স্থানটি নোট করুন [)) এটি নিয়মিত প্রকাশের মিলের সিনট্যাক্স। ভেঙে গেছে, এর অর্থ:

  • [...] মানে বন্ধনীগুলির মধ্যে অক্ষরের তালিকার যে কোনও একটির সাথে মিল।
  • \t ট্যাব হয়
  • \n নিউলাইন
  • ...\+ মানে পূর্ববর্তী এক বা একাধিক মিল।

নিয়মিত অভিব্যক্তি সম্পর্কিত আরও তথ্যের জন্য, আপনি ভিমকে জিজ্ঞাসা করতে পারেন:

:help regexp
:help usr_27

1

আমি ব্যক্তিগতভাবে ব্যবহার করেন [ \t\n]*স্পেস পরিবর্তে। এই শূন্য বা এর '', ট্যাব, এবং সম্পর্কে newline আরো অনেক কিছুতে ম্যাচ হবে। এইভাবে যদি আপনার অনুসন্ধানের প্যাটার্নের একটি উদাহরণ লাইন বিরতিতে বিস্তৃত হয় তবে অন্যটি না ঘটে তবে উভয়ই মিলবে।

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