मैं जीवीएम में नोटपैड ++ की तरह चयनित शब्द की सभी घटनाओं को कैसे उजागर कर सकता हूं?
मैं जीवीएम में नोटपैड ++ की तरह चयनित शब्द की सभी घटनाओं को कैसे उजागर कर सकता हूं?
जवाबों:
सामान्य मोड में:
:set hlsearch
फिर /
नॉर्मल मोड में कमांड के साथ एक पैटर्न की खोज करें, या <Ctrl>o
फिर /
इन्सर्ट मोड में। *
सामान्य मोड में कर्सर के नीचे शब्द की अगली घटना के लिए खोज करेंगे। hlsearch
विकल्प उन सभी को अगर सेट पर प्रकाश डाला जाएगा।#
शब्द की पिछली घटना की खोज करेंगे।
पिछली खोज के हाइलाइट को हटाने के लिए:
:nohlsearch
आप :nohlsearch<CR>
कुछ सुविधाजनक कुंजी को मैप करना चाह सकते हैं ।
*
या #
द्वारा <Ctrl>o
सामान्य मोड में।
:nohlsearch
, आप बस उपयोग कर सकते हैं:noh
.vimrc
: noremap <F4> :set hlsearch! hlsearch?<CR>
हाइलाइट के बीच टॉगल करने और हाइलाइट को हटाने के लिए <F4>
।
*
कुंजी शब्द है कि कर्सर के तहत की सभी घटनाओं पर प्रकाश डाला जाएगा।
&hlsearch
है तो ही ।
#
।
मुझे पता है कि यह वास्तव में एक पुराना सवाल है, लेकिन अगर कोई इस सुविधा में रुचि रखता है, तो इस कोड की जांच कर सकता है http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle
" Highlight all instances of word under cursor, when idle.
" Useful when studying strange source code.
" Type z/ to toggle highlighting on/off.
nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>endif<CR>
function! AutoHighlightToggle()
let @/ = ''
if exists('#auto_highlight')
au! auto_highlight
augroup! auto_highlight
setl updatetime=4000
echo 'Highlight current word: off'
return 0
else
augroup auto_highlight
au!
au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>'
augroup end
setl updatetime=500
echo 'Highlight current word: ON'
return 1
endif
endfunction
सबसे सरल तरीका, सामान्य मोड में टाइप करें *
सक्षम और अक्षम करने के लिए मेरे पास ये मैपिंग भी हैं
"highligh search enabled by default
set hlsearch
"now you can toggle it
nnoremap <S-F11> <ESC>:set hls! hls?<cr>
inoremap <S-F11> <C-o>:set hls! hls?<cr>
vnoremap <S-F11> <ESC>:set hls! hls?<cr> <bar> gv
उस पर क्लिक करके शब्द का चयन करें
set mouse=a "Enables mouse click
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>
बोनस: CountWordFunction
fun! CountWordFunction()
try
let l:win_view = winsaveview()
let l:old_query = getreg('/')
let var = expand("<cword>")
exec "%s/" . var . "//gn"
finally
call winrestview(l:win_view)
call setreg('/', l:old_query)
endtry
endfun
" Bellow we set a command "CountWord" and a mapping to count word
" change as you like it
command! -nargs=0 CountWord :call CountWordFunction()
nnoremap <f3> :CountWord<CR>
माउस के साथ शब्द का चयन करना और एक ही बार में घटित घटनाएँ: ओबीएस: ध्यान दें कि इस संस्करण में हमारे पास अंत में "काउंटवर्ड" कमांड है।
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
nnoremap * *``cgn
औरnnoremap # #``cgN
*
, मैं हाइलाइटिंग को कैसे बंद करूं?
:noh
या:nohlsearch
nnoremap <silent> * :execute "normal! *N"<cr>
और क्या nnoremap <silent> # :execute "normal! #n"<cr>
? ये सिर्फ कर्सर के नीचे शब्द को उजागर करते हैं लेकिन इसे अगली घटना के लिए स्थानांतरित नहीं करते हैं।
खोज आधारित समाधान ( *, /...) कर्सर ले जाएँ, जो दुर्भाग्यपूर्ण हो सकता है।
एक वैकल्पिक वर्धित मार्क.वीम प्लगइन का उपयोग करना है , फिर अपने .vimrc
डबल-क्लिक ट्रिगर हाइलाइटिंग को पूरा करने के लिए पूरा करें (मुझे नहीं पता कि कीबोर्ड चयन कैसे कमांड को ट्रिगर कर सकता है):
"Use Mark plugin to highlight selected word
map <2-leftmouse> \m
यह कई हाइलाइटिंग, दृढ़ता आदि की अनुमति देता है।
हाइलाइटिंग को हटाने के लिए, या तो:
:Mark
(अगले चयन तक स्विच ऑफ):MarkClear
:set noincsearch
:। मेरी राय में यह विम में सबसे अधिक कष्टप्रद सुविधाओं में से एक है और पहली चीजों में से एक है जिसे मैं ताजा इंस्टॉल के लिए अक्षम करता हूं।
*
बिना शर्त कर्सर ले जाएगा। और मैं यह नहीं देख incsearch
सकता कि कैसे कष्टप्रद हो सकता है, क्योंकि यह केवल एक 'आगे देखो' है, वास्तव में आपकी स्थिति को बदले बिना वर्तमान खोज कर रहा है।
incsearch
कि आंदोलन को रोक दिया जाएगा, लेकिन एक त्वरित परीक्षण आपको सही होने की पुष्टि करता है। मैं क्षमाप्रार्थी हूं। हालाँकि, यह एक मानचित्रण बनाने के लिए सुपर आसान है जो आंदोलन को रोकता है :nnoremap * *N
:। मुझे विश्वास नहीं हो रहा है कि आपको यह कष्टप्रद नहीं लगता कि आपका कर्सर स्क्रीन पर पूरी तरह से कूद जाता है जैसे आप खोज करते हैं। लेकिन ... ये बातें पूरी तरह से व्यक्तिपरक हैं। Vive la différence; ;-)
:let @/='hilight_this'
, कि आपने hlsearch
सक्षम किया है। यह बिना कूद के पाठ को हाइलाइट करता है, और आपको मौजूदा सेटिंग्स को बदलने की आवश्यकता नहीं है। यह उस मूल्य को बदलता है जो वर्तमान में खोज रजिस्टर में संग्रहीत है।
पहला (या आपके .vimrc में):
:set hlsearch
फिर अपने कर्सर को उस शब्द के ऊपर रखें, जिसे आप हाइलाइट करते हैं, और हिट चाहते हैं *
।
hlsearch
का अर्थ है वर्तमान खोज की सभी घटनाओं को उजागर करना और *
कर्सर के नीचे शब्द की खोज करना।
पहले यह सुनिश्चित करें कि निम्नलिखित कमांड जारी करके hlsearch सक्षम है
:set hlsearch
आप इसे अपने .vimrc फ़ाइल में सेट के रूप में भी जोड़ सकते हैं
set hlsearch
अब जब आप कमांड मोड या एक नियमित खोज कमांड में त्वरित खोज तंत्र का उपयोग करते हैं, तो सभी परिणामों पर प्रकाश डाला जाएगा। परिणामों के बीच आगे बढ़ने के लिए, 'n' को पीछे की ओर ले जाने के लिए 'N' दबाएँ।
सामान्य मोड में, कर्सर के नीचे शब्द के लिए एक त्वरित खोज करने के लिए और एक कमांड प्रेस '*' में अगली घटना के लिए कूदने के लिए, आप कर्सर के नीचे शब्द भी खोज सकते हैं और '#' दबाकर पिछली घटना पर जा सकते हैं। '
सामान्य मोड में, त्वरित खोज को भी इसके साथ लागू किया जा सकता है
/searchterm<Enter>
ocuurences के उपयोग पर हाइलाइट्स को हटाने के लिए, मैंने इसे अपने .vimrc में शॉर्टकट के लिए बाध्य किया है
:nohl
खोज हाइलाइटिंग सक्षम करें:
:set hlsearch
फिर शब्द की खोज करें:
/word<Enter>
यह करने के लिए मेरा पसंदीदा mark.vim प्लगइन है। यह एक साथ विभिन्न रंगों में कई शब्दों को उजागर करने की अनुमति देता है।
चलती कर्सर के बिना शब्द को उजागर करने के लिए, प्लॉप
" highlight reg. ex. in @/ register
set hlsearch
" remap `*`/`#` to search forwards/backwards (resp.)
" w/o moving cursor
nnoremap <silent> * :execute "normal! *N"<cr>
nnoremap <silent> # :execute "normal! #n"<cr>
अपने vimrc में।
इसके बारे में क्या अच्छा है g*
और g#
अभी भी "सामान्य" *
और की तरह काम करेगा #
।
सेट hlsearch
करने के लिए, आप "शॉर्ट-फॉर्म" का उपयोग कर सकते हैं (जब तक कि आपके पास कोई अन्य फ़ंक्शन नहीं है जो कमांड मोड में "नोह" से शुरू होता है) :noh
:। या आप लंबे संस्करण का उपयोग कर सकते हैं::nohlsearch
चरम सुविधा के लिए (मैं खुद को भीख माँगता हूँ hlsearch
प्रति दिन 20 बार ), आप कुछ इस hlsearch
तरह से टॉगल करने के लिए मैप कर सकते हैं :
" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>
।:। यदि आपका <leader>
है \(यह डिफ़ॉल्ट रूप से है), तो आप भी दबा सकते हैं\st (जल्दी) में सामान्य टॉगल करने के लिए मोड hlsearch
।
या शायद आप सिर्फ :noh
मैप करना चाहते हैं :
" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>
उपरोक्त बस :nohlsearch
इतना चलता है (इसके विपरीत :set hlsearch!
) यह तब भी शब्द को उजागर करेगा जब आप अगली बार दबाएंगे* या सामान्य मोड #में ।
चियर्स
उपयोग autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
सुनिश्चित करें कि आपने IncSearch
कुछ करने के लिए निर्धारित किया है। उदा call s:Attr('IncSearch', 'reverse')
। वैकल्पिक रूप से आप इसके स्थान पर किसी अन्य हाइलाइट समूह का उपयोग कर सकते हैं।
यह बिना किसी देरी के आपके कर्सर के तहत शब्दों की सभी घटनाओं को उजागर करेगा। मुझे लगता है कि एक देरी मुझे धीमा कर देती है जब मैं कोड के माध्यम से चक्कर लगा रहा हूं। हाइलाइट रंग शब्द के रंग से मेल खाएगा, इसलिए यह आपकी योजना के अनुरूप है।
सिर्फ क्यों नहीं: z /
यह कर्सर और किसी अन्य घटना के तहत वर्तमान शब्द को उजागर करेगा। और आपको प्रत्येक आइटम के लिए एक अलग कमांड देने की ज़रूरत नहीं है जिसे आप खोज रहे हैं। शायद यह अपवित्र gvim में उपलब्ध नहीं है? यह डिफ़ॉल्ट रूप से व्यर्थ है।
* यदि आप कर्सर को अगली घटना के लिए स्थानांतरित करना चाहते हैं तो केवल अच्छा है। जब आप दो चीजों की तुलना करते हैं, तो आप अक्सर कर्सर को स्थानांतरित नहीं करना चाहते हैं, और हर बार * कुंजी को मारना कष्टप्रद होता है।
~/.vimrc
फ़ाइल में उन पंक्तियों को जोड़ें
" highlight the searched items
set hlsearch
" F8 search for word under the cursor recursively , :copen , to close -> :ccl
nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
:so%
सामान्य मॉडल में शब्द के ऊपर जाते हैं।
शब्द पर अपनी पूरी परियोजना को पुनरावर्ती रूप से खोजने के लिए * F8 दबाएं
उदाहरण के लिए यह प्लगइन्स:
बस vimawesome.com में कर्सर के नीचे खोजें
कुंजी, के रूप में clagccs उल्लेख किया है, कि प्रकाश डाला करता है अपनी खोज के साथ संघर्ष नहीं : https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
स्क्रीन-शॉट यह खोज के साथ संघर्ष नहीं करता है: नोट्स:
hlsearch
बहुत से टॉगल करने की योजना बनाते हैं तो आप:set hlsearch!
इसके बजाय नक्शा करना चाह सकते हैं:set nohlsearch
। यह सेटिंग को हमेशा बंद रखने के बजाय टॉगल करता है।