Notepad ++有这个非常简洁的功能,如果你选择一个单词,那么单词的每个其他出现都会自动突出显示,就像这样(只有第一个 autocmd 被我突出显示):
我知道类似的事情已经asked,但我希望有一个不需要手动互动的解决方案。
答案 0 :(得分:14)
如果按*
,Vim将搜索光标下所有出现的单词。
如果您启用了搜索突出显示,则会突出显示它们。
您可以将此搜索突出显示在.vimrc
:
set hlsearch
一个不错的优点是你不必再选择这个词......你只需点击*
键。
(您可以将其映射到另一个键以使其更方便)
如果您不喜欢按*
时光标移动的方式,可以通过简单的映射来阻止它:
nnoremap * *N
(把它放在你的.vimrc 中)
当您按*
时,这会将光标保持在当前位置。
答案 1 :(得分:2)
这样的事情可行。
set updatetime=10
autocmd! CursorHold,CursorHoldI * let @/='\<'.expand('<cword>').'\>'
这使用CursorHold事件将/
寄存器设置为光标下的单词。为了使CursorHold事件更频繁地触发,updatetime被降低到10(从4000开始)。
问题:
:set hlsearch
。出于某种原因,它本身并没有打开。/
寄存器。总的来说,我不会使用这个,因为我觉得搜索比这个功能更重要。
答案 2 :(得分:2)
我的SearchHighlighting plugin有一个<Leader>*
映射和:SearchAutoHighlighting
命令来启用此功能。它可以突出显示光标下当前的单词/ WORD /整个单词/行/精确行。
答案 3 :(得分:1)
我会这样做:
:au CursorHold,CursorHoldI * :try | exe "call matchdelete(w:my_match)" | catch | finally | let w:my_match = matchadd('IncSearch', expand('<cword>')) | endtry
如果您不喜欢突出显示,请从:hi
的输出中选择一个好的,然后使用它而不是IncSearch。注意:这可能会大大减慢Vim的速度。