在Emacs中,当您进行搜索时,缓冲区内所有出现的内容都会有一个高亮颜色,而光标所在的匹配项则有另一种颜色。我想知道在vim中是否有类似的行为方式、vim插件或者甚至一些使用vimscript实现此功能的想法。
(注意,我已经知道hl-IncSearch,但这不是我要找的东西)
(注意,我已经知道hl-IncSearch,但这不是我要找的东西)
听起来你想要突出显示缓冲区中的所有结果。你可以这样说:
:set hls
这将打开hlsearch
。然后你可以说
:set nohls # turn off permanently
:noh # turn off until next time you search.
您还可以使用*(向前)或#(向后)搜索/突出显示光标下的单词。
*
键调用的命令无法解决此问题-它将更改搜索模式,我认为这不是他们想要做的事情。 - Merlyn Morgan-Grahamhl-IncSearch
与hlsearch
不同,而*
/#
只是其他人的额外文本奖励 :) - Peternoremap 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
noremap n \nn\m
noremap p \np\m
noremap * \n*\m
我没有一个确切的答案,但是可以通过改变光标的高亮显示来获得大约75%的想要的效果。默认的灰色光标块与默认的黄色搜索高亮不太对比。所以只需将光标高亮显示更改为(a)与黄色更对比,并且(2)也与您颜色方案中的其他颜色对比。 对于我来说,这样的东西效果还不错:
highlight Cursor guifg=green guibg=red
对于我来说,当前搜索匹配的第一个字母上闪烁的红色光标非常明显。虽然不如完整的解决方案好,但非常简单。(我认为如果您将这些项目添加到highlight
命令中,则在终端Vim中也可以很好地工作,但我还没有在那里测试过。)
nnoremap n nzz
,按下'n'时可以将搜索命中居中显示,并使用set cul
始终突出显示当前行。 - joelostblomnnoremap n nz.
和nnoremap N Nz
。 - math2001