আমি অনুসন্ধান শেষ করার পরে কীভাবে স্বয়ংক্রিয়ভাবে "hlsearch" বন্ধ করব?


19

আমি "hlsearch" সেটিংটি পছন্দ করি, তবে আমার অনুসন্ধান শেষ হওয়ার পরে, আমি এটিকে খারাপ বলে মনে করি। বিশেষত যদি আমি এমন কোনও কিছু অনুসন্ধান করি যার সাথে প্রচুর মিল রয়েছে। আমি জানি যে আমি এটি দিয়ে বন্ধ করতে পারি

:set nohlsearch

তবে এটি পুরো 16 টি কীস্ট্রোক নেয় এবং আরও বিরক্তিকরভাবে, আমার পরবর্তী অনুসন্ধানের জন্য আমাকে এটি আবার চালু করতে হবে

:set hlsearch    

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


3
স্বয়ংক্রিয়ভাবে সংজ্ঞা দিন।
অ্যান্টনি

@ অ্যান্টনি হিসাবে, আমি যদি সম্পাদনাগুলি করছি বা সন্নিবেশ মোডে রেখেছি তবে আমাকে কোনও বোতাম টিপে না রেখে এটি বন্ধ হয়ে যাবে। আমি যদি /বা দিয়ে অনুসন্ধান করতে শুরু করি ?বা আমি টিপছি nবা N, এটি আমাকে আর কোনও বোতাম টিপতে হবে না করে চালু হবে।
ডিজেএমসিএমহেম

1
ওহ এবং "সম্পন্ন" অনুসন্ধানটি সংজ্ঞায়িত করুন
ক্রিশ্চিয়ান ব্র্যাব্যান্ড 18

1
:nno <BS> :set hls!\|set hls?<CR>- একটি লাইন, একটি কিপ্রেস, রাজ্য প্রতিক্রিয়া, এবং আপনি কখন হাইলাইট করতে চান বা নাও করতে পারেন তা দ্বিতীয়-অনুমানের চেষ্টা করে না। কখনও কখনও আমি সম্পাদনা করার সময় পর্দার বাম দিকে হাইলাইট করতে চাই। কখনও কখনও আমি না, যেমন /একটি অপারেটরের সাথে একটি গতি হিসাবে ব্যবহার ।
অ্যান্টনি

nnoremap <M-\> :set hlsearch!<CR><Bar>:echo 'hlsearch: ' . ['Off', 'On'][&hlsearch]<CR>
সাতো কাতসুরা

উত্তর:


26

আরও অনেক সুবিধাজনক উপায় আছে। বরং ব্যবহার করা

:set nohlsearch

যা আসলে hlsearch সেটিংটি বন্ধ করে দেয়, ব্যবহার করুন

:nohls

আপনি আবার অনুসন্ধান না করা পর্যন্ত এটি কেবলমাত্র hlsearch বন্ধ করবে। থেকে:help nohls

                 *'hlsearch'* *'hls'* *'nohlsearch'* *'nohls'*
'hlsearch' 'hls'    boolean (default off)
            global
            {not in Vi}
            {not available when compiled without the
            |+extra_search| feature}

    ...

    When you get bored looking at the highlighted matches, you can turn it
    off with |:nohlsearch|.  This does **not change the option value**, as
    soon as you use a search command, the highlighting comes back.

যাইহোক, এই সমাধানটি নিখুঁত নয়, যেহেতু আপনাকে এখনও :nohlsঅনুসন্ধান করতে হবে যে প্রতিটি অনুসন্ধানের পরে কোনটি ব্যথা করতে পারে। আপনি ম্যাপিং এর সাথে এটি প্রায় পেতে পারেন, যেমন

nnoremap <esc><esc> :silent! nohls<cr>

তবে এর থেকেও আরও ভাল সমাধান আছে! haya14busa / incsearch.vim । এটি আমার মতে অন্তত একটি প্রয়োজনীয় ভিআইএম প্লাগইন। মূল বৈশিষ্ট্যটি হ'ল সমস্ত অনুসন্ধানের ম্যাচগুলি রিয়েল টাইমে হাইলাইট করা হয়, আপনি নিজের রেজেক্সটি টাইপ করার সময়। উদাহরণ স্বরূপ:

এখানে চিত্র বর্ণনা লিখুন

তবে, একটি গৌণ বৈশিষ্ট্য যা সরবরাহ করা হয় তা হ'ল অনুসন্ধান শুরু করা / বন্ধ করার সাথে সাথে অবিলম্বে এইচএসসিআর টগল করা এবং বন্ধ করা বিকল্প । এই বৈশিষ্ট্যটি সক্ষম করতে, আপনাকে যুক্ত করতে হবে

set hlsearch
let g:incsearch#auto_nohlsearch = 1
map n  <Plug>(incsearch-nohl-n)
map N  <Plug>(incsearch-nohl-N)
map *  <Plug>(incsearch-nohl-*)
map #  <Plug>(incsearch-nohl-#)
map g* <Plug>(incsearch-nohl-g*)
map g# <Plug>(incsearch-nohl-g#)

আপনার .vimrc

আপনার যদি অন্য কোনও nম্যাপিং থাকে তবে আপনাকে এগুলি বন্ধ করতে হবে। উদাহরণস্বরূপ, আমি ছিল

nnoremap n nzz
nnoremap N Nzz

এই দুটি ম্যাপিং প্রত্যেকটির সাথে সামঞ্জস্যপূর্ণ নয়!


যেহেতু আপনি একটি স্ব উত্তর করছ আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি সাথে আরেকটা সমস্যা যোগ চাই set hlsearch। আপনি যদি এটিতে এটি সংজ্ঞায়িত করেন vimrcতবে :nohপ্রতিবার উত্স উত্সে ওভাররাইট হবে vimrc। এটিকে বাছাই করতে if !&hlsearch | set hlsearch | endifআমার মধ্যে আছে vimrc। (এবং এটি অন্য একটি সমস্যা যা প্লাগইন সমাধান করে))
গ্রাচমাল

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

একটি দুর্দান্ত প্লাগইন প্রশ্নের উত্তর দেওয়ার জন্য এবং আরও অনেক কিছু করার জন্য +1!
রিচভেল

7

ভিএম-কুল একটি সাধারণ প্লাগইন যা এটি এটি করে।

ভিম-কুল অনুসন্ধান অনুসন্ধান হাইলাইটিং অক্ষম করে এবং আপনি আবার অনুসন্ধান করার পরে এটি পুনরায় সক্ষম করে।

এটি কাজ করে remapping ছাড়া দ্বারা ব্যবহারCursorMoved এবং InsertEnterautocommands।


এই কৌশলটি (অটোম্যান্ড ব্যবহার করে) আমার উত্তরের চেয়ে ভাল, এবং আমি বিশ্বাস করতে পারি না যে আমি আমার লেখার সময় এটিকে ভেবে দেখিনি। ভোট দিন।
ধনী

5

আমি <Leader><Enter>একটি শর্টকাট হিসাবে ব্যবহার :noh। (আমার নেতা ,, তাই এটি খুব কাছাকাছি)

এটি আপনার পরবর্তী অনুসন্ধান না হওয়া পর্যন্ত হাইলাইটগুলি বন্ধ করে দেবে।


3

আপনি ইতিমধ্যে আপনার নিজের জবাবটিতে উল্লেখ করেছেন যে , পুরো বৈশিষ্ট্যটি বন্ধ করে দেওয়া এবং পরবর্তী সময়ে অনুসন্ধানের সময় এটিকে ফিরিয়ে না দেওয়ার চেয়ে :nohlsearchকমান্ডটি (যার সংক্ষেপণ দেওয়া যেতে পারে :noh) দিয়ে হাইলাইট করা বন্ধ করা আরও কার্যকর ।

আপনি যদি iসন্নিবেশ মোডে প্রবেশের জন্য প্রতিবার হাইলাইটটি বন্ধ করতে চান , আপনি এটির জন্য একটি সাধারণ ম্যাপিং তৈরি করতে পারেন:

:nnoremap i :noh<cr>i

পাঠকদের পক্ষে অন্যান্য কমান্ডের জন্য অনুরূপ ম্যাপিং তৈরি করার অনুশীলন হিসাবে ছেড়ে দেওয়া হয়েছে যেখানে তারা সুইচ অফ বন্ধ করতে চায় want


2

এটি বোকা বা নিষ্পাপ শোনাতে পারে তবে হাইলাইট করা বন্ধ করতে চাইলে আমি যা করি তা হ'ল আমি একটি এলোমেলো স্ট্রিং সন্ধান করি যা (কার্যত অবশ্যই) নথিতে উপস্থিত নেই। এটার মতো কিছু:

/skljdfhadhfs

মঞ্জুর, এটি কয়েকটি কী স্ট্রোক নেয়, তবে এগুলি সত্যই এলোমেলো, সুতরাং এগুলি কোনও সময় টাইপ করা যায় না।


1
তবে এটি কাজ করে না nএবং Nআর কাজ করে না, এবং পছন্দ মতো :%s//somethingবা পছন্দ করে :g//something। এছাড়াও এটি আপনার অনুসন্ধানের ইতিহাস clutters
DJMcMayhem

হ্যাঁ, তবে আমার (সম্ভবত ভুল) ধারণাটি হ'ল যেহেতু আপনাকে আর হাইলাইট করার দরকার নেই, তাই আপনিও সেই বিশেষ অনুসন্ধানের বিষয়ে চিন্তা করেন না। যদি কেউ এর উপর নির্ভর করে তবে অনুসন্ধানের ইতিহাসকে চাঙ্গা করা একটি আসল সমস্যা।
কোস্টাস

1

আমি পুনরায় রঙ করতে আরও স্বজ্ঞাত পেয়েছি Ctrl- Lঅন্তর্ভুক্ত করার জন্য পুনরায় রঙ করুন :nohls:

nnoremap <C-L> :nohls<cr><C-L>

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

0

আমি <Leader><Enter>শর্টকাট হিসাবে ব্যবহার করি :hlsএবং আমার নেতা স্থান হিসাবে সেট করেছেন।

let mapleader = "\<Space>"
nmap <silent> <leader><Esc> :set hls!<cr>

অনুসন্ধানের পরে কোনও আইটেম হাইলাইট করা হবে, এটি বন্ধ করতে, আঘাত করুন <Space><Esc>। এবং যদি আপনি সিদ্ধান্ত নেন যে আপনি অনুসন্ধান ফলাফলগুলি পুনরায় খেলতে চান, চাপুন <Space><Esc>। এর hls!অর্থ hls( কীভাবে সংক্ষিপ্তকরণের জন্য hlsearch, অর্থাত অনুসন্ধানের ফলাফল হাইলাইট করা) এর জন্য সেটিংস টগল করার জন্য এই কীটি আবদ্ধ করার মানচিত্রটি মানচিত্রটি মানচিত্রটি ম্যাপ করে (সুতরাং !এটির ঠিক আগে সেটিংসটি টগল করে)।


-1

আপনার .vimrc এ এই ম্যাক্রো যুক্ত করুন

map #h :set hls!<CR>

এটি আপনাকে # এইচ দিয়ে হাইলাইটিং টগল করার অনুমতি দেবে


এটি জেমস অ্যাফ্লেকের উত্তরের চেয়ে আলাদা নয়।
জামেসান

খনি আরও সংক্ষিপ্ত বলে মনে হচ্ছে।
ড্যারাল লি

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