在emacs中,当你进行搜索时,缓冲区中的所有出现都会有一个高亮颜色,而光标碰巧出现的颜色则是另一种颜色。我想知道是否有人知道vim中的类似行为,vim插件,甚至是关于如何在vimscript中完成它的一些想法。
(注意,我已经知道了hl-IncSearch,这很接近,但不是我想要的)
答案 0 :(得分:9)
听起来你想突出显示缓冲区中的所有结果。你可以说
:set hls
这会打开hlsearch
。然后你可以说
:set nohls # turn off permanently
:noh # turn off until next time you search.
您还可以使用 * (前锋)或#(后退)搜索/突出显示光标下的单词。
答案 1 :(得分:7)
据我所知,没有内置的方法可以做你想做的事。
如果我自己尝试实现它......那么你可以做到的一种方法是覆盖*
,n
和p
并将其与{{{}}结合起来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插件,可以满足您的要求。