在Vim中进行搜索后,我突出显示了所有事件。我怎样才能禁用它?我现在再次搜索一些找不到的胡言乱语。
有没有一种方法可以暂时禁用高亮显示,然后在需要时再次启用?
在Vim中进行搜索后,我突出显示了所有事件。我怎样才能禁用它?我现在再次搜索一些找不到的胡言乱语。
有没有一种方法可以暂时禁用高亮显示,然后在需要时再次启用?
当前回答
这将在不活动的更新时间毫秒后清除搜索突出显示。
更新时间默认为4000ms或4s,但我将我的设置为10s。需要注意的是,updatetime不仅仅是这样,所以在更改之前请阅读文档。
function! SearchHlClear()
let @/ = ''
endfunction
augroup searchhighlight
autocmd!
autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END
其他回答
有两个“必须拥有”插件:
sense-Ctrl-l用于nohlsearch和重绘屏幕。未被察觉的-[哦,]哦,控制搜索。
我在~/.vimrc中使用以下内容
nnoremap<Leader><space>:noh<Enter>
这使得清除当前突出显示的搜索变得非常容易和快速。我的引导键被映射到\,所以这使得我的右手小指和拇指很容易执行这个动作。
我最初的解决方案(下图)既肮脏又浪费。我现在使用:否
像Vim中的许多功能一样,正确的方法通常不容易发现。
--
(不要这样做)
搜索不太可能的字符序列(将主行上的键混合):
/;alskdjf;
这在vim和更少的情况下工作,并且比@ShaunBouckaert逻辑上更清晰的解决方案“清除上次使用的搜索模式”更容易记住/键入:
:let@/=“”
一个潜在的缺点是,它会将垃圾添加到您的搜索历史记录中。
这是我使用的(从许多不同的问题/答案中提取):
nnoremap <silent> <Esc><Esc> :let @/=""<CR>
使用“double”Esc键可以删除突出显示,但一旦再次搜索,突出显示将再次出现。
另一种选择:
nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>
根据vim文档:
清除匹配()清除以前由|matchadd()|和|:match |命令。
我认为将@ShaunBouckaert和2009年3月19日16:22的答案混合在一起是一个很好的折中方案:
" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>
按Enter键,突出显示的文本不再突出显示,而搜索突出显示仍处于启用状态。