मैं वर्तमान दस्तावेज़ में हाइलाइटिंग शब्द को कैसे स्पष्ट कर सकता हूं (जैसे कि किसी शब्द को खोजने के बाद)?


61

जब आप किसी फ़ाइल में किसी शब्द को खोजते हैं जैसे कि /console.log, सभी उदाहरणों console.logको हाइलाइट किया जाता है।

जब आप इन में रुचि नहीं रखते हैं, तो हाइलाइटिंग विचलित कर सकती है। हाइलाइटिंग को हटाने के लिए मेरी वर्तमान रणनीति कुछ ऐसा करना है /asntehua। क्या इस शब्द को उजागर करने का एक उचित तरीका है?


2
टाइप करने के लिए तेजी से कुछ भी नहीं है /skldafjlksjdf;)
शाहबाज़

1
निम्नलिखित को अपने .vimrc में जोड़ें :nnoremap <silent> <CR> :nohlsearch<CR><CR>:। कमांड मोड में हिट वापसी, और हाइलाइटिंग गायब हो जाता है।
निलोन

जवाबों:


47

इसके विकल्प के रूप में :noh, मुझे :let @/=""कीबोर्ड शॉर्टकट से मैप करना पसंद है ।

अंतर यह है कि :nohखोज शब्द को खोज रजिस्टर में छोड़ देता है, इसलिए nऔर Nसामान्य मोड में अगले / पिछले मैच में कूदकर और फिर से हाइलाइटिंग करके खोज को फिर से शुरू करें। :let @/=""दूसरी ओर का उपयोग करके , संदेश का कारण बनता है E25: No previous regular expressionऔर आपके कर्सर को छोड़ देता है जहां यह था , जो विशेष रूप से सुविधाजनक है यदि आप अभी तक इसके बारे में नहीं जानते हैं ctrl- oफिर भी और गलती से मारा गया n

इसे दूसरे तरीके से भी इस्तेमाल किया जा सकता है। यह करने के लिए कूद के बिना कुछ पाठ को उजागर करने के लिए विम का कारण, आप कर सकते हैं:let @/="some text"

इन अभिव्यक्तियों में, @ आपको एक रजिस्टर को संदर्भित करता है, और @ / अंतिम खोज पैटर्न रखने वाला रजिस्टर है।


31

बस टाइप करें

:noh<cr>

(जहां <cr>एक गाड़ी वापसी का प्रतीक है, यानी दर्ज करें।) इस कमांड का पूर्ण गैर-संक्षिप्त संस्करण है :nohlsearch

सुविधा के लिए, आप एक मानचित्रण जैसे कर सकते हैं

nnoremap <Leader><space> :noh<cr>

अपने में .vimrc। चूँकि मेरा लीडर स्पेस है, यह मुझे दो बार स्पेस टैप करके हाइलाइटिंग क्लियर करने की अनुमति देता है। (डिफ़ॉल्ट रूप से, इसके <Leader>लिए सेट है \)

एक और लोकप्रिय विकल्प इसे Ctrl+ से बाँधना है L, क्योंकि यह 'रिडवर्न टर्मिनल स्क्रीन' के लिए डिफ़ॉल्ट रूप से कम या ज्यादा है, जो कि आप कर रहे हैं:

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

इसका टर्मिनल स्क्रीन को फिर से लाल करने का साइड-इफ़ेक्ट भी है , जो कि अगर आपका टर्मिनल कनेक्शन धीमा है (जो कि बहुत कम दिनों का है) धीमा हो सकता है।
नोट: यदि आप tpope / vim-sensible का उपयोग कर रहे हैं तो यह पहले से ही <C-l>ऊपर सूचीबद्ध मैपिंग प्रदान करता है।


21

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

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

:set nohlsearch

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

:noh

या :nohlsearch(जब तक साफ करता है nया Nदबाया जाता है या एक नई खोज किया जाता है)


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

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

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

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

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

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

मैंने nnoremap <esc> :noh<return><esc>अपने साथ जोड़ा vimrcलेकिन यह काम नहीं कर रहा है। मैंने jkबचने के लिए मैप किया है, ऐसा क्यों हो सकता है?
mbigras

वास्तव में क्या हो रहा है? शायद आपने ESCकुंजी अक्षम कर दी है ?
शेहरार

दबाए jkगए हाइलाइट किए गए पाठ को टॉगल नहीं करता है (लेकिन फिर भी काम करता है Esc)। Escमेरे कीबोर्ड के ऊपर बाईं ओर दबाने से हाइलाइट किए गए टेक्स्ट को टॉगल किया जाता है।
mbigras

तो आपके पास अपना जवाब है। अपने jkमानचित्र को मानचित्र के नीचे रखें ESCऔर सुनिश्चित करें कि आप mapइसके बजाय एक साधारण का उपयोग कर रहे हैंnoremap
शेहरार

भागने से बचना तीर कुंजी के साथ समस्या पैदा कर सकता है, और मैं अन्य परिदृश्यों का अनुमान लगाऊंगा जो एक एस्केप कोड का उपयोग करते हैं। vi.stackexchange.com/questions/11144/…
Rob Mosher

2

~ / Vimrc में इसके लिए शॉर्टकट के लिए कई सुझाए गए समाधानों को आज़माने के बाद, मैं बस nmap <esc><esc> :noh<return>इसे जोड़ने पर बस गया। डबल एस्केप एरो कीज़ के फंक्शन में हस्तक्षेप को रोकता है। यदि आप इन्सर्ट मोड में हैं, तो ट्रिपल एस्केप आवश्यक है। यह निष्पादित करने में आसान है और याद रखने में आसान है।


2

मैंने अपने .vimrc में एक ऑटोकैमड जोड़ा है जो आपके द्वारा डाला गया मोड डालने पर कभी भी हाइलाइटिंग को हटा देता है।

 autocmd InsertEnter * :let @/=""

2
nohlइसके बजाय का उपयोग करना let @/=""एक बेहतर दृष्टिकोण होगा, तब से आप अपनी वर्तमान खोज को बंद नहीं करेंगे।
जामसेन

@jamessan यह :let @/=""कमांड के साथ काम करता है, लेकिन autocmd InsertEnter * :nohकिसी कारण से, किसी भी विचार के लिए क्यों नहीं?
tobek

1
दरअसल मुझे इसका कारण मिला: डॉक्स के अनुसार 'सर्च-हाइलाइटिंग को ऑटोकॉमैंड में ": nohlsearch" के साथ बंद नहीं किया जा सकता है - क्यों का विवरण: vimdoc.sourceforge.net/htmldoc-autocmd.html#autocmd-searchpat
tobek

1

यदि आप किसी खोज के बाद हाइलाइट नहीं करना चाहते हैं, तो आप इसका (बेहतर) उपयोग कर सकते हैं:

:set nohls

या यह (बदतर):

:hi Search NONE

1

जब मैंने टाइप किया :help incsearch, तो मैंने मैनुअल में निम्नलिखित पाया:

augroup vimrc-incsearch-highlight
  autocmd!
  autocmd CmdlineEnter /,\? :set hlsearch
  autocmd CmdlineLeave /,\? :set nohlsearch
augroup END

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


1
/asdfasdf

इससे यह लाभ होता है कि आपको इसे अतिशयोक्ति के साथ टाइप करने की आवश्यकता नहीं होती है। नुकसान यह है, कि एक 4096 बाइट फ़ाइल में लगभग 1: 68719476736 मौका है कि यह काम नहीं करता है और आपका कर्सर एक अलग स्थान पर कूद जाएगा। बड़ी फ़ाइलों के लिए यह संभावना बढ़ जाती है।


1
Vi SE पर आपका स्वागत है! मुझे लगता है कि स्ट्रिंग asdfasdfइस अर्थ में विशेष है कि यह यादृच्छिक फ़ाइलों में अक्सर यादृच्छिक-चयनित 8-बाइट अनुक्रम से होता है। इस प्रकार, मौका कहीं अधिक है। :-)
user259412

0

मुझे नहीं लगता कि हल्स को हटाना एक अच्छी बात होगी, कैसे एक आसान शॉर्टकट (बूलियन) बनाने में सक्षम या अक्षम करने के बारे में मेरे मामले में ->

" to reselect use gv in normal mode
nnoremap <S-F11> <ESC>:set hls!<cr>
inoremap <S-F11> <C-o>:set hls!<cr>
vnoremap <S-F11> <ESC>:set hls!<cr> <bar> gv

!सेटिंग के अंत में " " होने के कारण जादू होता है


0

मुझे लगता है कि मेरे लिए यह बहुत दुर्लभ है कि मैं हाइलाइटिंग चाहता हूं और जब मुझे हाइलाइटिंग की आवश्यकता होती है तो यह केवल एक संक्षिप्त क्षण के लिए होता है। मेरा समाधान है

nnoremap <Leader>/ set hls!<CR>

\/यदि आप दबाते हैं और फिर से प्रेस करते हैं तो यह हाइलाइटिंग को सक्षम करता है। यह दुर्लभ मामलों में हाइलाइटिंग की आसान पहुँच देता है जब आपको इसकी आवश्यकता होती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.