在vim中突出显示当前搜索结果

时间:2011-08-25 23:55:27

标签: vim

在emacs中,当你进行搜索时,缓冲区中的所有出现都会有一个高亮颜色,而光标碰巧出现的颜色则是另一种颜色。我想知道是否有人知道vim中的类似行为,vim插件,甚至是关于如何在vimscript中完成它的一些想法。

(注意,我已经知道了hl-IncSearch,这很接近,但不是我想要的)

4 个答案:

答案 0 :(得分:9)

听起来你想突出显示缓冲区中的所有结果。你可以说

:set hls

这会打开hlsearch。然后你可以说

:set nohls  # turn off permanently
:noh        # turn off until next time you search.

您还可以使用 * (前锋)或(后退)搜索/突出显示光标下的单词。

答案 1 :(得分:7)

据我所知,没有内置的方法可以做你想做的事。

如果我自己尝试实现它......那么你可以做到的一种方法是覆盖*np并将其与{{{}}结合起来3}}:

noremap n n:call HighlightNearCursor()<CR>
noremap p p:call HighlightNearCursor()<CR>
noremap * *:call HighlightNearCursor()<CR>

function HighlightNearCursor()
  if !exists("s:highlightcursor")
    match Todo /\k*\%#\k*/
    let s:highlightcursor=1
  else
    match None
    unlet s:highlightcursor
  endif
endfunction

我还没有测试过,所以这不是一个完整的解决方案,但我认为这至少是一种可行的方法。

编辑:您可能需要设置一些自定义高亮颜色。 this function提供了一些有关该信息的信息,尽管我记得在某个地方看到了一个更简洁的示例

再次编辑:也许更清晰的解决方案是将This vimwiki page与第一种技术结合使用。然后它将归结为类似的东西:

noremap n \nn\m
noremap p \np\m
noremap * \n*\m

答案 2 :(得分:4)

我没有真正的答案,但是一个简单的方法来获得你想要的75%可能只是改变光标的突出显示。默认灰色光标块与搜索高亮显示的默认黄色不完全对比。因此,只需将光标突出显示更改为(a)与黄色形成鲜明对比的东西,(2)也可以将颜色方向中的其他颜色对比。对我来说,这样的效果非常好:

highlight Cursor guifg=green guibg=red

对我来说,当前搜索匹配的第一个字母上闪烁的红色光标非常出色。不像一个完整的解决方案,但死亡简单。 (我假设如果你将这些项添加到highlight命令但在那里没有测试它,它在终端Vim中也能正常工作。)

答案 3 :(得分:3)

我刚刚编写了一个vim插件,可以满足您的要求。

https://github.com/timakro/vim-searchant