নোহলসার্ক এবং: সেট নোহলসার্কের মধ্যে কার্যকরী পার্থক্য কী?


13

আমি লক্ষ্য করেছি যে যখন আমি :nohlsearchএটি ব্যবহার করি তখন এটি আসলে একই জিনিসটি করে না :set nohlsearch

বিশেষত, hlsearchসেটিংসটি আসলে স্যুইচ অফ হয় না (যা এটি :set hlsearch) সম্পাদন করে।

আমি কী বোঝাতে চাইছি তা প্রদর্শনের জন্য:

:set hlsearch
:nohlsearch
:echo &hlsearch

এই মুদ্রণগুলি 1( hlsearch এখনও সেট করা আছে! )

:set hlsearch
:set nohlsearch
:echo &hlsearch

এই প্রিন্টগুলি 0হ'ল কারণ আমরা ভিএম-তে একটি সেটিং বন্ধ করে দেওয়ার জন্য স্ট্যান্ডার্ড উপায়টি ব্যবহার করে এইচএলসার্ক বন্ধ করে দিয়েছি।

সুতরাং আমি এক ধরণের ভাবছি কারণ :nohlsearchপ্রাক্তন কমান্ড বিদ্যমান থাকার কিছু প্রকৃত কারণ থাকতে হবে।

আমার যত্নের কারণটি হ'ল অনুসন্ধানের হাইলাইটটি সক্রিয় কিনা তা পরীক্ষা করার জন্য আমার এখন আমার ভিআইএম স্ক্রিপ্টিংয়ের প্রয়োজন রয়েছে এবং যেহেতু আমি :nohlsearchআমার অন্যান্য স্ক্রিপ্টিংয়ে ": সেট নোহলসার্ক" এর পরিবর্তে ব্যবহার করছিলাম, তাই আমার &hlsearchপরীক্ষা সর্বদা ফিরে আসে 1। সুতরাং আমি ভাবছি আমি nohlsearchপ্রাক্তন কমান্ডটি আর ব্যবহার না করে কী পরিবর্তন করছি ।

উত্তর:


15

থেকে :h :nohlsearch

                                                        : নোহ: নোহলসার্ক
: নাহ [lsearch] 'hlsearch' বিকল্পের জন্য হাইলাইটিং বন্ধ করুন। এটা
                        কোনও অনুসন্ধান ব্যবহার করার সময় স্বয়ংক্রিয়ভাবে চালু হয়
                        কমান্ড, বা 'hlsearch' বিকল্প নির্ধারণ।
                        এই কমান্ডটি একটি স্বতঃসমানায় কাজ করে না, কারণ
                        হাইলাইটিং অবস্থাটি সংরক্ষণ করা হয় এবং পুনরুদ্ধার করা হয় যখন
                        অটোকোমন্ডস অটোকিমডি-সার্চপ্যাট কার্যকর করছে।
                        কোনও ব্যবহারকারী ফাংশন চাওয়ার জন্য একই জিনিস।

মূল বক্তব্যটি হ'ল আপনি যখন নতুন অনুসন্ধান শুরু করবেন এটি স্বয়ংক্রিয়ভাবে হাইলাইটটি ফিরিয়ে দেয়। :set nohlsearchআসলে hlsearchবন্ধ হয়ে যায়, যার অর্থ পরবর্তী সময় আপনি কোনও কিছুর সন্ধান করলে কোনও হাইলাইট হয় না।

উদাহরণ: ধরে hlsearchনেওয়া চলমান , আপনি যদি বর্তমানে বাফারে "হ্যালো" অনুসন্ধান করছেন, সমস্ত "হ্যালো" গুলি হাইলাইট করা হবে। আপনি যদি কিছু ব্যবহার করেন :nohlsearchতা হাইলাইট করা হবে। তবে আপনি যদি "বিশ্ব" অনুসন্ধান করেন তবে সমস্ত "বিশ্বের" হাইলাইট করা হবে। আপনি যদি set nohlsearchপরিবর্তে "বিশ্ব" ব্যবহার করেন তবে হাইলাইট করা হবে না।


এছাড়াও লক্ষ করুন যে এই কমান্ডটি মূলত কোনও ব্যবহারকারীর ফাংশনের ভিতরে কিছুই করে না। উদাহরণ স্বরূপ,

function! NoHlsearch()
    nohlsearch
endfunction

রান করার সময় কোনও দৃশ্যমান প্রভাব নেই।


এইচএলসার্ক আসলে সক্রিয় কিনা তা দেখতে আপনি ভেরিয়েবলটি পরীক্ষা করতে চান v:hlsearch। যখন v:hlsearch = 0হাইলাইট করা বন্ধ থাকে এবং কখন v:hlsearch = 1হাইলাইট করা হয়। আপনি সম্ভবত &hlsearch = 1পরীক্ষা করার আগে নিশ্চিত করা উচিত v:hlsearch

থেকে :h v:hlsearch

                                        v: hlsearch hlsearch-variable
v: hlsearch পরিবর্তনশীল যা অনুসন্ধান হাইলাইটিং চালু আছে কিনা তা নির্ধারণ করে।
                'Hlsearch' সক্ষম করা দরকার থাকলে কেবল তখনই বোধগম্য হয়
                + + Extra_search। এই ভেরিয়েবলটিকে শূন্যে সেট করা এর মতো কাজ করে
                : nohlsearch কমান্ড, এটিকে একটির মতো করে সেট করে
                        & hlsearch = এবং hlsearch দিন

কোনও ফাংশনের অভ্যন্তরীণ দিক থেকে "মূলত কিছুই না" বলতে কী বোঝাতে চেয়েছেন তা কি আপনি পরিষ্কার করতে পারেন? এটি স্ট্যান্ডার্ড জিনিসটি করে (এটি পরবর্তী সময় অনুসন্ধান শুরু না হওয়া পর্যন্ত অস্থায়ীভাবে অনুসন্ধানটি হাইলাইট করা বন্ধ করে)।
স্টিভেন লু

আমি এই পতাকাটি অ্যাক্সেসের এমন কোনও উপায় :nohlsearchসন্ধানের আশায়ও আছি যা ক্ষণস্থায়ী কার্যকর কিনা এবং তা নিয়ন্ত্রণ করে ... আমি মনে করি এর অভাবে আমাকে :nohlsearchভেরিয়েবলের সাথে সমস্ত কলগুলি ট্র্যাক করতে হবে ।
স্টিভেন লু

@ স্টিভেনলু সম্পাদনা দেখুন।
এফডিনফ

ধন্যবাদ। দেখে মনে হচ্ছে যে কোডটি হ্যাকগুলি ব্যবহার করে এর চারপাশে "মূলত কিছুই করছে না" এর দিকটি ব্যবহার করছি: nnoremap <silent> <expr> <boundkey> SearchHighlight()যেখানে SearchHighlight()কোনও স্ট্রিং ফিরে আসতে পারে ":silent nohlsearch\<CR>"। টিপটির জন্য আপনাকে ধন্যবাদ v:hlsearch, ঠিক আমার যা প্রয়োজন ছিল।
স্টিভেন ল

1

আপনার স্ক্রিপ্টের কী হাইলাইট করার বর্তমান অবস্থা জানা উচিত?

hlsearchকেবলমাত্র বর্তমান অনুসন্ধানের জন্য বন্ধ করতে , আমি Ctrl-lআমার .vimrc এর সাথে এটি ব্যবহার করি:

nnoremap <silent> <C-l> :<C-u>nohlsearch<CR><C-l>

উপরের কমান্ডটি ব্যবহার করে পরবর্তী অনুসন্ধানের সাথে ফেরত অনুসন্ধান সন্ধান করুন। Ctrl-lসুবিধাজনক কারণ এটির সাধারণ ব্যবহার হ'ল স্ক্রিনটি সাফ এবং পুনরায় আঁকা।

অবিচ্ছিন্নভাবে বা অনুসন্ধান সন্ধানের স্থিতি পরিবর্তন করতে, আমি আমার টগল হিসাবে F3 ব্যবহার করি:

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