Notepad++ 有一个非常简洁的功能,如果你选择一个单词,每隔一次出现的单词都会自动突出显示,就像这样(只有第一个autocmd被我突出显示):
我知道已经有人问过类似的问题,但我希望有一个不需要手动交互的解决方案。
如果你按下*
Vim 将搜索光标下所有出现的单词。
如果您打开了搜索突出显示,它们将被突出显示。
您可以通过将其放入您的以下来打开搜索突出显示.vimrc
:
set hlsearch
一个不错的优点是您不必再选择单词了……您只需按一下*
键。
(您可以将其映射到另一个键以使其更加方便)
如果您不喜欢按下时光标移动的方式,*
您可以通过简单的映射来阻止它:
nnoremap * *N
(把它放在你的 .vimrc 中)
当您按下 时,这会使光标保持在当前位置*
。
我的SearchHighlighting 插件有一个<Leader>*
映射和:SearchAutoHighlighting
命令来启用它。它可以突出光标下的当前单词/WORD/整个单词/行/确切行。
像这样的东西可以工作。
set updatetime=10
autocmd! CursorHold,CursorHoldI * let @/='\<'.expand('<cword>').'\>'
这使用 CursorHold 事件来设置/
寄存器光标下的单词。为了使 CursorHold 事件更频繁地触发,更新时间被降低到 10(从 4000)。
问题:
:set hlsearch
手动操作。由于某种原因,它不会自行打开。/
因为当光标移动时您正在更改寄存器。总的来说,我不会使用这个,因为我认为搜索比这个功能更重要。
I would do it like this:
:au CursorHold,CursorHoldI * :try | exe "call matchdelete(w:my_match)" | catch | finally | let w:my_match = matchadd('IncSearch', expand('<cword>')) | endtry
If you don't like the highlighting, select a nice one from the output of :hi
and use it instead of IncSearch. Note: This might slow down Vim considerably.