4

Notepad++ 有一个非常简洁的功能,如果你选择一个单词,每隔一次出现的单词都会自动突出显示,就像这样(只有第一个autocmd被我突出显示):

N++ 高亮截图

我知道已经有人过类似的问题,但我希望有一个不需要手动交互的解决方案。

4

4 回答 4

16

如果你按下*Vim 将搜索光标下所有出现的单词。

如果您打开了搜索突出显示,它们将被突出显示。

您可以通过将其放入您的以下来打开搜索突出显示.vimrc

set hlsearch

一个不错的优点是您不必再选择单词了……您只需按一下*键。

您可以将其映射到另一个键以使其更加方便


如果您不喜欢按下时光标移动的方式,*您可以通过简单的映射来阻止它:

nnoremap * *N

把它放在你的 .vimrc 中

当您按下 时,这会使光标保持在当前位置*

于 2013-07-11T18:22:13.767 回答
2

我的SearchHighlighting 插件有一个<Leader>*映射和:SearchAutoHighlighting命令来启用它。它可以突出光标下的当前单词/WORD/整个单词/行/确切行。

于 2013-07-12T08:57:13.653 回答
2

像这样的东西可以工作。

set updatetime=10

autocmd! CursorHold,CursorHoldI * let @/='\<'.expand('<cword>').'\>'

这使用 CursorHold 事件来设置/寄存器光标下的单词。为了使 CursorHold 事件更频繁地触发,更新时间被降低到 10(从 4000)。

问题:

  1. 您需要:set hlsearch手动操作。由于某种原因,它不会自行打开。
  2. 这会干扰正常搜索。/因为当光标移动时您正在更改寄存器。

总的来说,我不会使用这个,因为我认为搜索比这个功能更重要。

于 2013-07-11T18:10:54.110 回答
1

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.

于 2013-07-11T19:10:15.840 回答