अंतिम खोज हाइलाइटिंग स्पष्ट करें


1903

विम में खोज करने के बाद, मुझे सभी घटनाओं पर प्रकाश डाला गया। मैं इसे कैसे निष्क्रिय कर सकता हूं? मैं अब कुछ खोज के लिए एक और खोज करता हूं जो नहीं मिल सकता है।

क्या हाइलाइट को केवल अस्थायी रूप से अक्षम करने का एक तरीका है और फिर इसे फिर से सक्षम करने की आवश्यकता है?


197
मुझे लगता है कि "nnoremap <esc>: noh <return> <esc>" समाधान प्रश्न का एक और अधिक पूर्ण उत्तर है - जिसे अपने .vimrc में डालकर आप हाइलाइटिंग को खाली करने के लिए खोज करने के बाद बस <esc> दबा सकते हैं। पिछली खोज से (लेकिन अच्छे के लिए हाइलाइटिंग को अक्षम नहीं करें)।
स्टीवर्ट जॉनसन

5
: सेट इनवैलसर्च हाइलाइटिंग को निष्क्रिय कर देगा अगर इसकी पहले से हाइलाइट की गई है और यदि यह नहीं है तो इसे सक्षम करें। शिफ्ट-एच कहने के लिए आप इसे मैप कर सकते हैं।
पफैडर

1
@StewartJohnson कर रही है कि मेरी .vimrc फ़ाइलों में हस्तक्षेप करने / तोड़ने के लिए लगता है: set mouse = a। कोई विचार क्यों? यह त्रुटि केवल iTerm2 में होती है
चार्ली पार्कर

20
@StewartJohnson सावधान! मैपिंग के साथ आपकी शीर्ष-रेटेड टिप्पणी में त्रुटियों और अप्रत्याशित व्यवहार होता है जैसा कि नीचे दिए गए टिप्पणियों में वर्णित है stackoverflow.com/a/1037182/1698467 पर
Skywinder

3
nnoremap <esc> :noh<return><esc>समाधान @StewartJohnson ने सुझाव दिया जीयूआई vim में अच्छी तरह से काम करता है, लेकिन तीर कुंजी और अन्य ESC एन्कोड कुंजी जब एक टर्मिनल में vim चल के साथ समस्याओं का कारण बनता है। अपने में रख मत ~/.vimrc में यह लपेटकर के बिना if has('gui_running')... end
जुबेर

जवाबों:


1586

अगली खोज तक हाइलाइटिंग बंद करने के लिए:

:noh

या पूरी तरह से हाइलाइटिंग बंद करें:

set nohlsearch

या, इसे टॉगल करें:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>

14
Vh के पुनः आरंभ होने पर हाइलाइटिंग रिटर्न को सेट करके nohlsearch करके। :nohबेहतर काम करता है।
धर्मित

21
यह कष्टप्रद है कि यह एक जिबरिश स्ट्रिंग की खोज करने के लिए उतनी ही तेजी से हो सकता है: / oajf3w9 जैसा कि यह टाइप करना है: noh। मुझे अंतरिक्ष कुंजी की मैपिंग करने में @ अवोकेड का समाधान पसंद है: नोह
nnyby

160
यह इस जवाब और टिप्पणियों से स्पष्ट नहीं है: ध्यान दें कि set nohlsearchहाइलाइटिंग को अगली खोजों के लिए भी अक्षम कर देगा। का व्यवहार :nohबहुत भिन्न है: जब आप नई खोज करते हैं या जब आप वर्तमान खोज से संबंधित कुछ करते हैं (जैसे जब आप nअगले आइटम पर जाते हैं) तब हाइलाइटिंग स्वचालित रूप से फिर से अक्षम हो जाएगी ।
स्किप्पी ले ग्रैंड गौरू

10
ये वास्तव में क्या करते हैं और परिणाम क्या हैं, इसकी कोई व्याख्या नहीं। इसके कुछ समझाने के लिए @SkippyleGrandGourou को धन्यवाद।
जेसन एस

3
इसके लायक के लिए, मैं इसे '\/'(या जो भी आपका नेता है) के लिए मैप करता हूं :map <Leader>/ :nohlsearch<CR>
brianmearns

689

से विम प्रलेखन

अंतिम उपयोग किए गए खोज पैटर्न को साफ़ करने के लिए:

:let @/ = ""

यह पैटर्न को एक खाली स्ट्रिंग पर सेट नहीं करेगा, क्योंकि यह हर जगह मेल खाएगा। पैटर्न वास्तव में साफ हो जाता है, जैसे कि विम शुरू करना।


129
... जो उसकी समस्या का एक बेहतर समाधान होगा क्योंकि मैं इसे समझता हूं।
शॉन बोकैर्ट

8
यह वही है जिसे मैं देख रहा था! मैंने इसे वोट दिया, सवाल थोड़ा अस्पष्ट है। इसने मुझे यह सोचने के लिए प्रेरित किया कि वह क्या चाहता है: "मैं अब कुछ गिब्रिश के लिए एक और खोज करता हूं जो नहीं मिल सकता है"। क्योंकि वह वही है जो मैं खोज को खाली करने के लिए कर रहा था, लेकिन इसे अक्षम नहीं किया ताकि अगली खोज फिर से उजागर हो।
क्लेट्रॉन

50
यह वही है जो मैंने सोचा था कि प्रश्न के बारे में था ... यहाँ एक कमांड है जिसे मैंने खोज स्ट्रिंग को साफ़ करने के लिए बनाया है (और इसलिए सभी हाइलाइट को हटा रहा है): इसका :command C let @/=""उपयोग करने से आप :Cखोज स्ट्रिंग को साफ़ करने के लिए टाइप कर सकते हैं ... बहुत जल्दी भविष्य की खोज या हाइलाइटिंग को प्रभावित नहीं करता है।
जेसन

12
@ jcreamer898, "रजिस्टर" ( :he registers) पर विम सहायता देखें । विम में कई अलग-अलग अंतर्निर्मित रजिस्टर होते हैं, जो टेक्स्ट को होल्ड करते हैं, कभी-कभी याँक किए गए डेटा के लिए, कभी-कभी अंतिम खोज के लिए, आदि। जब आप कोई खोज करते हैं, तो vim "/" रजिस्टर में पैटर्न डालता है, जिसका आप उपयोग करते हैं @/। तुम भी उपयोग कर रहा रजिस्टरों को मान निर्दिष्ट कर सकते हैं @regname=valueजहां regnameरजिस्टर का नाम है है। इसलिए, @/=""बस रजिस्टर "/" को एक खाली स्ट्रिंग पर सेट करना है (सिवाय इसके कि "/" रजिस्टर vim अंतिम खोज को खाली कर देगा यदि इसमें खाली स्ट्रिंग शामिल है)।
बेन डेविस

3
अंतिम खोज को साफ़ करने के लिए Ctrl + / पाने के लिए इसे अपने .vimrc में जोड़ें: noremap <silent> <c-_> :let @/ = ""<CR>
गुस्सा

583

तुम कर सकते हो

:noh

या :nohlsearchअगली खोज तक हाइलाइटिंग को अस्थायी रूप से अक्षम करने के लिए।


3
धन्यवाद, यह मददगार था ... हाइलाइट वापस करने के लिए कोई आदेश?
गैब्रियल सोलोमन

17
: नोहरे केवल वर्तमान हाइलाइटिंग बंद कर देते हैं। यदि आपके पास: hlsearch सेट है तो यह आपकी खोजों को उजागर करना जारी रखेगा।
ग्रेफेड

6
मुझे लगता है कि यह वही है जो ओपी खोज रहा था (हालांकि शॉन का जवाब भी काम करता है)। मैं छोटा होने के कारण इसे बढ़ा रहा हूं। मुझे पता है कि उन्होंने नॉल्स के उत्तर को स्वीकार कर लिया था, लेकिन इसे सेट करने से सभी खोज हाइलाइटिंग को अक्षम कर देगी, भले ही किसी अन्य खोज के बाद की कोशिश की गई हो।
थियागो अराइज़

5
यह शायद वही है जो ओपी पहले स्थान पर चाहता था और सबसे कम, सबसे अच्छा जवाब आईएमएचओ है।

इस नश्वर क्षेत्र में भी पूर्णता प्राप्य है! मैं इससे अधिक का उपयोग करेगा: मदद, और प्रदूषित नहीं करना चाहता <esc>: nnoremap <F1>: noh <CR>
सैम Watkins

305

मुझे यह उत्तर वर्षों पहले vim.org पर मिला था:

निम्नलिखित को अपने .vimrc में जोड़ें:

"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>

इस प्रकार, आपकी खोज के बाद, बस कमांड मोड में फिर से वापसी करें, और हाइलाइटिंग गायब हो जाती है।


36
मुझे लगता है कि यह वास्तव में स्वीकार किए जाने वाले की तुलना में बहुत बेहतर समाधान है - या तो यह एक या दूसरा वह है जहां इसके बजाय इसे मैप किया गया है।
स्टीवर्ट जॉनसन

20
यह "nnoremap <esc>: noh <return> <esc>" का बहुत बेहतर उत्तर है क्योंकि यह अजीब व्यवहार का कारण नहीं बनता है।
डेनिस

19
नोट करने के लिए एक महत्वपूर्ण बात, सुनिश्चित करें कि आपने रीमैप के दाहिने हाथ पर कोई टिप्पणी नहीं की है। उन्हें टिप्पणी के विपरीत रीमैप के लिए कमांड के रूप में व्याख्या की जाएगी।
codybuell

13
टिप्पणी गलत है; कमांड अंतिम खोज पैटर्न को अनसेट नहीं करता है लेकिन बस वर्तमान परिणामों के हाइलाइटिंग को बंद कर देता है; आप nअगली घटना को खोजने के लिए हिट कर सकते हैं (जिसे फिर से हाइलाइट किया जाएगा)। BTW, जब स्क्रिप्टिंग, मैं संक्षिप्त रूप से बचना होगा, और इसके बजाय लिखें :nohlsearch
टॉबी

28
कमांड लाइन में फ्लैश चमकने और नोह छोड़ने से बचने के लिए <चुप> जोड़ें - nnoremap <sil> <CR>: nohlsearch <CR> <CR>
पीटर एन लुईस

137

से http://twitter.com/jonbho/status/2194406821

" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[

भागने की कुंजी को मैप करने के लिए दूसरी पंक्ति की आवश्यकता होती है क्योंकि विम विशेष रूप से विशेष कुंजी का प्रतिनिधित्व करने के लिए भागने का उपयोग करता है।


12
बस स्पष्ट होने के लिए, यह आपको एस्केप कुंजी दबाकर खोज को उजागर करने की सुविधा देता है
गेविन मिलर

7
किसी कारण से, यह मेरे टर्मिनल को शुरू करता है जैसे कि "ग" दबाया गया था। कोई विचार?
जैकब

31
जब मैंने इसे आज़माया तो कुछ बहुत ही अजीब व्यवहार हुआ: स्टार्टअप पर, रेगुलर विम मूवमेंट्स (जैसे j, k) से लाइनें हट जाएंगी। nnoremap <CR>: noh <CR> <CR> ने इन समस्याओं का कारण नहीं बनाया। मैं मूल कारण को ट्रैक नहीं कर सका।
oasisbob

9
हम्म, मैं ऊपर के रूप में एक ही समस्या थी। जब तक आप अपने पाठ को बेतरतीब ढंग से हटाना पसंद नहीं करते हैं, तब तक इसका उपयोग न करें ...
Derek Litz

8
"nnoremap <esc>: noh <return> <esc>" का उपयोग करके vim हमेशा "REPLACEMENT" मोड में शुरू होता है।
user1850133 20

38

मेरा मूल समाधान (नीचे) गंदा और बेकार था। मैं अब उपयोग करता हूं:noh

विम में कई विशेषताओं की तरह, अक्सर सही तरीका आसानी से खोजा नहीं जा सकता है।

-

(यह मत करो)

एक संभावित चरित्र अनुक्रम खोजें (होम रो पर कुंजियों को मिटाएं):

/;alskdjf;

यह कम और कम काम करता है, और यह याद रखना आसान है / @ ShaunBouckaert के तार्किक क्लीनर समाधान की तुलना में "अंतिम उपयोग किए गए खोज पैटर्न को साफ़ करने के लिए":

:let @/ = ""

एक संभावित नकारात्मक पक्ष यह है कि यह आपके खोज इतिहास में जंक जोड़ता है।


17
न केवल यह एक गंदा समाधान है (जो मैं खुद अब तक इस्तेमाल करता था, कोई अपराध नहीं), एक और नकारात्मक पक्ष यह है कि यह एक बदसूरत लाल बैनर कहता है, जो खिड़की के निचले भाग में "पैटर्न नहीं मिला", जो हाइलाइटिंग के रूप में लगभग कष्टप्रद है। खुद और आगे की कार्रवाई को त्यागने की आवश्यकता है (उदाहरण के लिए "खोज + बैकस्पेस")।
स्किप्पी ले ग्रैंड गौरू

5
इसमें कुछ सेकंड भी लग सकते हैं, क्योंकि यह वास्तव में फ़ाइल के बाकी हिस्सों को खोजता है। यदि फ़ाइल बड़ी है तो यह वास्तव में कष्टप्रद है। बेशक, आप अपनी वर्तमान स्थिति को चिह्नित कर सकते हैं, शुरुआत में कूद सकते हैं, और एक चरित्र के लिए पीछे की ओर खोज सकते हैं, लेकिन यह उसी तरह गंदा है।
ब्लैकलाइट शाइनिंग

5
यह वह समाधान है जो अधिकांश ने कमांड के बारे में जानने से पहले उपयोग किया होगा :nohl। एक बार जब मुझे बाद के बारे में पता चला, तो मैंने तुरंत उन खोजों को करना बंद कर दिया।
तोबियों

7
यह कोई उत्तर नहीं है; यह वही करने की सिफारिश कर रहा है जो ओपी पहले से ही करता है: "मैं अब कुछ गिब्रिश के लिए एक और खोज करता हूं जो नहीं मिल सकता है।"
मोनिका को बहाल करना - notmaynard

2
यदि आप एक मूर्ख और लघु पैटर्न का उपयोग करना चाहते हैं /$4। यह वास्तव में पूरी तरह से कुछ भी पूरी तरह से IMPOSSIBLE से मेल खाने की संभावना नहीं है। $हमेशा एक नई पंक्ति का पालन करना चाहिए या फ़ाइल का अंत होना चाहिए, और 4 न तो एक नई रेखा है और न ही फ़ाइल का अंत है। (4 के लिए विशेष रूप से कारण यह है कि यह एक ही कुंजी पर है, इसलिए इसे जल्दी से टाइप करना वास्तव में आसान है)
अर्धविराम

32

मेरे .vimrc.local फ़ाइल में, त्वरित और गंदे, लेकिन बहुत ही कार्यात्मक:

" Clear last search highlighting
map <Space> :noh<cr>

32
nnoremap <cr> :noh<CR><CR>:<backspace>

इस तरह मुझे :nohकमांडलाइन में दिखाया गया है, जब मार रहा हैenter खोज के बाद ।

:एक नई कमांड में प्रवेश करना शुरू करने की तरह है, Backspaceइसे साफ़ करता है और फ़ोकस को वापस संपादक विंडो में डालता है।


6
धन्यवाद। नीचे बायीं ओर दिखा ": नोह" मुझे पागल कर रहा था, धिक्कार है ओसीडी।
andrewtweber

मैं इसे nnoremap <S-cr>: noh <CR> <CR> कर के शिफ्ट करने के लिए मैप करने की कोशिश कर रहा था, लेकिन यह काम नहीं किया, क्या आप जानते हैं कि यह काम क्यों नहीं कर रहा है?
चार्ली पार्कर

मुझे संदेह है कि आप वापसी के साथ बदलाव को जोड़ नहीं सकते, लेकिन मुझे ईमानदारी से कोई पता नहीं है।
जुज

@CharlieParker IIRC आप केवल [a-z]और ऐसे पात्रों पर पारी का उपयोग कर सकते हैं ।
22

7
करने के बजाय :<Backspace>, आप केवल विम को यह बताने <silent>के nnoremapलिए जोड़ सकते हैं कि कमांड क्षेत्र में कोई आउटपुट प्रदर्शित न करें nnoremap <silent> <cr> :noh<CR><CR>:।
सोरेन ब्योर्नस्टैड

31

मूल प्रश्न में पूछे गए खोज हाइलाइटिंग को अस्थायी रूप से अक्षम करने के लिए (उदाहरण के लिए, मैट मैकमिन का) उत्तर देने :nohवाले प्रस्ताव :nohlsearchसही हैं ।

मैंने सोचा कि मैं एक मानचित्रण में योगदान दूंगा जो मुझे सामान्य मोड में उपयोगी लगता है:

nnoremap <C-L> :nohlsearch<CR><C-L>

डिफ़ॉल्ट रूप से, CtrlLVim स्क्रीन को साफ़ और पुन: बनाता है। कमांड लाइन कार्यक्रमों की एक संख्या (ज्यादातर GNU Readline लाइब्रेरी का उपयोग करने वाले , जैसे बैश) स्क्रीन को साफ करने के लिए एक ही कुंजी संयोजन का उपयोग करते हैं। यह सुविधा उस स्थिति में उपयोगी है जहां पृष्ठभूमि में चल रही एक प्रक्रिया टर्मिनल के लिए प्रिंट करती है, अग्रभूमि प्रक्रिया के ओवर-राइटिंग पार्ट्स।

यह नॉर्मल मोड मैपिंग स्क्रीन को रिड्रॉ करने से पहले सबसे हालिया सर्च शब्द के हाइलाइटिंग को भी साफ करता है। मुझे लगता है कि दोनों सुविधाएँ एक-दूसरे की पूरक हैं और एक का उपयोग करना सुविधाजनक हैCtrlL खोज हाइलाइटिंग को अक्षम करने के लिए एक अलग मैपिंग बनाने के बजाय दोनों कार्यों के लिए ।

NB: अन्यथा के noremapबजाय प्रयोग किया mapजाता है, मानचित्रण पुनरावर्ती होगा।

टिप: मैं आमतौर पर रीमैप करता हूंCaps Lock करने के लिए Ctrlयह आसान ऐसी कुंजी संयोजन टाइप करने के लिए बनाने के लिए; ऐसा करने के लिए विवरण आपके ओएस / विंडोिंग सिस्टम की पसंद पर निर्भर करते हैं (और इस उत्तर के लिए ऑफ-टॉपिक हैं)। दोनों निम्नलिखित युक्तियों मानचित्रण के बारे में जानकारी शामिल Caps Lockकरने के लिए Ctrlऔर साथ ही Esc:


26

मैं आम तौर पर :nohबैकस्लैश की के लिए मैप करता हूं । nहाइलाइटिंग को फिर से करने के लिए, बस हिट करें , और यह फिर से हाइलाइट करेगा।


24

स्थायी रूप से हाइलाइटिंग खोज अक्षम करें

जब भी आप किसी खोज का उपयोग करते हैं तो मिलान हाइलाइट नहीं किया जाएगा /

:set nohlsearch

अगली खोज तक हाइलाइट करें

:noh

या :nohlsearch(जब तक साफ करता है nया Nदबाया जाता है)


दबाने पर स्पष्ट प्रकाश डालें ESC

nnoremap <esc> :noh<return><esc>

किसी अन्य कुंजी या कस्टम मानचित्र को दबाने पर स्पष्ट हाइलाइट करें

  • दबाने पर स्पष्ट प्रकाश डाला \(बैकस्लैश)

    nnoremap \ :noh<return>
    
  • ESCदो बार मारने पर स्पष्ट प्रकाश डाला

    nnoremap <esc><esc> :noh<return>
    

2
nnoremap <silent> <esc> :noh<return><esc>समाधान जीयूआई vim में अच्छी तरह से काम करता है, लेकिन गंभीर समस्याओं का कारण बनता तीर कुंजी और अन्य ESC एन्कोड कुंजी जब एक टर्मिनल में vim चल रहा है। अपने में रख मत ~/.vimrc में यह लपेटकर के बिना if has('gui_running')... end। इसके अलावा स्टेटस बार में कमांड को <silent>फ्लैश करने से बचने वाले जोड़ने पर विचार करें :noh
jbyler

17

यह वह है जो मैं उपयोग करता हूं (बहुत सारे विभिन्न प्रश्नों / उत्तरों से निकाला गया):

nnoremap <silent> <Esc><Esc> :let @/=""<CR>

"डबल" के साथ Escआप हाइलाइटिंग को हटा देते हैं, लेकिन जैसे ही आप फिर से खोजते हैं, हाइलाइटिंग फिर से प्रकट होती है।


एक अन्य विकल्प:

nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>

दस्तावेज़ के अनुसार:

clearmatches ()

    Clears all matches previously defined by |matchadd()| and the

    |:match| commands.

मैंने शीर्ष समाधानों में कुछ बगों का सामना किया, इसलिए सभी उत्तरों की कोशिश करने के लिए अपना समय बचाने के लिए। इस घोल का प्रयोग करें! अपना संपादन करें .vimrcऔर उसमें निम्नलिखित प्रविष्टि nnoremap <silent> <Esc><Esc> :let @/=""<CR>
डालें

लेकिन यह है कि यह कहता है कि ओओ शायद आप अपवोट कर सकते हैं?
पाब्लो ओल्मोस डी एगुइलेरा सी।

मैं आपके समाधान का समर्थन कर रहा हूं ... यह सबसे अच्छा एक IMO है ... और मैंने इसे भी
उतारा है

1
अपने खोज को वापस पाने के लिए काम नहीं करने के साथ खोज रजिस्टर को साफ़ करने @/=""का दुष्प्रभाव है n। मैं पसंद :nohकरता हूं जो पिछली खोज को फिर से उपयोग के लिए रजिस्टर में रखता है।
जुबेर

11

अगली खोज तक हाइलाइटिंग बंद करने के लिए

:noh

दृश्य चित्रण


10

यदि आपके पास incsearch.vim प्लगइन स्थापित है, तो खोज के बाद हाइलाइट को स्वचालित रूप से साफ़ करने के लिए एक सेटिंग है:

let g:incsearch#auto_nohlsearch = 1

यहां छवि विवरण दर्ज करें


8

वीआईएम और जीवीआईएम के लिए जानूस में मेरे जैसे न्यूब्स के लिए कई बेक्ड-इन चीजें हैं

<leader>hs - toggles highlight search

जो ठीक वही है जो आपको चाहिए। बस \hsसामान्य मोड में टाइप करें। (लीडर कुंजी को \डिफ़ॉल्ट रूप से मैप किया जाता है।)

HTH।


7

इसके लिए दो 'प्लग इन' होने चाहिए:

  1. समझदार -Ctrl-l nohlsearch और redraw स्क्रीन के लिए।
  2. unimpared - [oh, ]ohऔर cohनियंत्रण hlsearch करने के लिए।

v2 में unimpaired बदल coगया yoहै, इसलिए यह है yoh। देखें github.com/tpope/vim-unimpaired/blob/v2.0/doc/unimpaired.txt और github.com/tpope/vim-unimpaired/issues/150
myrdd

cohअभी भी काम करता है, हालांकि yohअगर आप उपयोग करने का सुझाव देने वाला एक संदेश हैcoh
अविनाशशर्मा

7

कर्सर ले जाते ही हाइलाइटिंग बंद करें:

विम-कूल स्थापित करें । यह इस विशिष्ट समस्या को ठीक करने के लिए बनाया गया था। कर्सर ले जाते ही यह हाइलाइटिंग बंद कर देता है। हालांकि चेतावनी दी है, यह एक हाल ही में संस्करण की आवश्यकता है!


6

यह updatetimeमिलीसेकेंड की निष्क्रियता के बाद सर्च हाइलाइट को साफ कर देगा ।

updatetimeचूक 4000ms या 4 पर करने के लिए लेकिन मैं 10s करने के लिए मेरा सेट। यह नोट करना महत्वपूर्ण है कि updatetimeइससे अधिक करने से पहले आप इसे बदलने से पहले डॉक्स को पढ़ें।

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END

6

आप करने में सक्षम होना चाहते हैं / अक्षम सक्षम हाइलाइटिंग जल्दी से , आप के लिए एक महत्वपूर्ण मैप कर सकते हैं

" Press F4 to toggle highlighting on/off, and show current value.
:noremap <F4> :set hlsearch! hlsearch?<CR>

बस आप ऊपर स्निपेट को .vimrc फ़ाइल में डालें।

मेरे लिए गायन कुंजी स्ट्रोक के साथ खोज हाइलाइट दिखाने और छिपाने का सबसे सुविधाजनक तरीका है

अधिक जानकारी के लिए दस्तावेज़ देखें http://vim.wikia.com/wiki/Highlight_all_search_pattern_macees


5

2 शीर्ष उत्तरों के संयोजन से एक और समाधान:

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>

अपने खोज को वापस पाने के लिए काम नहीं करने के साथ खोज रजिस्टर को साफ़ करने @/=""का दुष्प्रभाव है n। मैं पसंद :nohकरता हूं जो पिछली खोज को फिर से उपयोग के लिए रजिस्टर में रखता है। आप <F3>उस के साथnnoremap <F3> :noh<CR>
jabler

5

मैं निम्नानुसार escआदेश के लिए मानचित्रण करना पसंद करता हूं :noh:

map <esc> :noh<cr>

मैंने हाल ही में विम खोज के बारे में एक पूरा लेख लिखा : खोज सुविधाओं को बढ़ाने के लिए वेनिला विम और सबसे अच्छा प्लगइन पर कैसे खोज करें।



4

मेरा अनुमान है कि मूल प्रश्न संबंधित नहीं है अक्षम खोज हाइलाइटिंग बल्कि अंतिम खोज से हाइलाइटिंग को साफ़ करने का है। एक अस्पष्ट स्ट्रिंग की खोज का समाधान, जिसका मूल पोस्टर ने उल्लेख किया है, एक है जिसे मैं पिछले खोज से हाइलाइटिंग को साफ़ करने के लिए कुछ समय के लिए उपयोग कर रहा हूं, लेकिन यह बदसूरत और बोझिल है।

कई सुझाव मुझे मिल गए हैं nnoremap ...~ / .vimrc यहाँ स्टार्टअप पर विधा को बदलने के लिए प्रभाव डाला गया है, जो कि मैं जो चाहता हूं, वह बिल्कुल नहीं है। सबसे सरल उपाय जो मैंने पाया है वह है लाइन जोड़ना

nmap <esc><esc> :noh<return>

मेरे ~ / .vimrc को। KISS सिद्धांत और करने के लिए यह hews तीर कुंजी है, जो एक एकल <esc> करता है का उपयोग कर के साथ हस्तक्षेप नहीं करता है। एक पिछली खोज से हाइलाइटिंग को स्पष्ट करने के लिए कमांड मोड (या इन्सर्ट या रिप्लेस मोड से एक ट्रिपल- <esc>) में एक डबल- <esc> की आवश्यकता होती है, लेकिन UI दृष्टिकोण से यह ऑपरेशन को यथासंभव सरल बनाता है।


तीर कुंजी के साथ दखल देने वाले एकल <esc> से आपका क्या मतलब है?
हंसमुख

1
@hansmosh देखें unix.stackexchange.com/questions/28713/… मैं अपने .vimrc में दो पंक्तियों का उपयोग इस प्रकार करता हूं nmap <esc><esc> :noh<return> - to turn off search highlighting and nmap <esc>` :set hlsearch<return> - to turn on search highlighting
Lindsay Haisley

4

मैं अपने में निम्नलिखित का उपयोग करता हूं ~/.vimrc

nnoremap <Leader><space> :noh<Enter>

इससे वर्तमान हाइलाइट की गई खोज को साफ़ करना बहुत आसान और त्वरित हो जाता है। मेरी लीडर कुंजी को मैप किया जाता है, \जिससे मेरी दाहिनी पिंकी उंगली और अंगूठे के साथ क्रिया करना बहुत आसान हो जाता है।


3

मुझे लगता है कि @ShaunBouckaert और Mar 19 '09 को 16:22 पर मिलाना एक अच्छा समझौता है:

" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>

दबाया Enterगया पाठ अब हाइलाइट नहीं किया गया है, जबकि खोज हाइलाइटिंग अभी भी सक्षम है।


3

आप इस तरह से खोज परिणाम के लिए चालू करने के लिए : noremap का उपयोग कर सकते हैं

:noremap <F3> :set hls! hls?<CR>


3

@ बारच-सम-उत्तर के आधार पर, आप सामान्य मोड ESCमें रहते हुए खोज शब्द को डबल प्रेस पर हटा सकते हैं :

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[

मुझे लगता है कि दूसरा बंधन ठीक है, लेकिन पहला खतरनाक है। <esc>जीयूआई विम में रीमैपिंग अच्छी तरह से काम करता है, लेकिन एक टर्मिनल में विम चलने पर तीर कुंजी और अन्य ईएससी-एन्कोडेड कुंजी के साथ गंभीर समस्याएं पैदा करता है। अपने में रख मत ~/.vimrc में यह लपेटकर के बिना if has('gui_running')... end। इसके अलावा स्टेटस बार में कमांड को <silent>फ्लैश करने से बचने वाले जोड़ने पर विचार करें :noh
जुबेर

1

मुझे यह पसंद नहीं है। मुझे :nohlहर समय प्रवेश करना थकाऊ लगता था ... इसलिए मैंने निम्नलिखित मानचित्रण को अपने अंदर डाल लिया.vimrc

noremap <C-_> :nohl<cr>:<backspace>

पहला बिट ( :nohl<cr>) हाइलाइटिंग को साफ करता है; दूसरी बिट ( :<backspace>) कमांड लाइन को साफ करने की एक चाल है । खोज अभी भी पृष्ठभूमि में है, इसलिए यदि आप nइसे हिट करते हैं तो यह फिर से हाइलाइट होगा और आपको अगली घटना पर ले जाएगा।


1

मैंने इसे अपनी vimrcफ़ाइल में जोड़ा ।

command! H let @/=""

आप एक खोज करते हैं और अपनी खोज से हाइलाइट्स को साफ करना चाहते हैं :H


1

आप वैकल्पिक रूप से अपने .vimrc फ़ाइल पर मैपिंग जोड़ सकते हैं,

nmap <C-N>: nohlsearch

और फिर आप दबा सकते हैं

Ctrl + N

हाइलाइट किए गए पाठ को साफ़ करने के लिए किसी भी समय


कृपया अपने उत्तर को यह सुनिश्चित करने के लिए संपादित करें कि यह इस प्रश्न में पहले से मौजूद अन्य उत्तरों में सुधार करता है।
hongsy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.