在Vim中进行搜索后,我突出显示了所有事件。我怎样才能禁用它?我现在再次搜索一些找不到的胡言乱语。

有没有一种方法可以暂时禁用高亮显示,然后在需要时再次启用?


当前回答

这将在不活动的更新时间毫秒后清除搜索突出显示。

更新时间默认为4000ms或4s,但我将我的设置为10s。需要注意的是,updatetime不仅仅是这样,所以在更改之前请阅读文档。

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END

其他回答

VIM和GVIM的Janus为像我这样的新手提供了很多新鲜的东西,包括

<leader>hs - toggles highlight search

这正是你需要的。只需在正常模式下键入%hs。(默认情况下,引线键映射到\。)

HTH.

另外一个解决方案是结合两个顶级答案:

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>

如果您安装了incsearch.vim插件,则有一个设置可以在搜索后自动清除突出显示:

let g:incsearch#auto_nohlsearch = 1

永久禁用搜索突出显示

每当您使用/

:set nohlsearch

清除突出显示,直到下一次搜索

:noh

或:nohlsearch(清除,直到按下n或n)


按ESC键时清除高亮显示

nnoremap <esc> :noh<return><esc>

按另一个键或自定义地图时清除高亮显示

按\(反斜杠)时清除突出显示nnoremap\:noh<return>两次按下ESC时清除高亮显示nnoremap<esc><esc>:否<return>

这是我使用的(从许多不同的问题/答案中提取):

nnoremap <silent> <Esc><Esc> :let @/=""<CR>

使用“double”Esc键可以删除突出显示,但一旦再次搜索,突出显示将再次出现。


另一种选择:

nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>

根据vim文档:

清除匹配()清除以前由|matchadd()|和|:match |命令。