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

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


当前回答

您也可以在.vimrc文件上添加映射,

nmap<C-N>:无效搜索

然后你可以按

Ctrl+N组合键

随时清除突出显示的文本

其他回答

为这两种行为定义映射,因为它们都很有用!

完全清除搜索缓冲区(例如,按n进行下一次匹配将不会继续搜索)保留搜索缓冲区,并切换突出显示搜索结果的开/关/开/。。。(例如,按n将继续搜索,但突出显示将基于切换的当前状态)

" use double-Esc to completely clear the search buffer
nnoremap <silent> <Esc><Esc> :let @/ = ""<CR>
" use space to retain the search buffer and toggle highlighting off/on
nnoremap <silent> <Space> :set hlsearch!<CR>

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

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

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


另一种选择:

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

根据vim文档:

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

我个人喜欢将esc映射到命令:noh,如下所示:

地图<esc>:否<cr>

我最近写了一整篇关于Vim搜索的文章:如何在普通Vim上搜索,以及增强搜索功能的最佳插件。

我的猜测是,最初的问题不是禁用搜索突出显示,而是简单地从上次搜索中清除突出显示。搜索原始海报中提到的乱码字符串的解决方案是我用了一段时间来清除先前搜索中突出显示的解决方案,但它既丑陋又麻烦。

我发现了几个添加nnoremap的建议。。。~/.vimrc在这里的效果是在启动时将vim置于替换模式,这根本不是我想要的。我找到的最简单的解决方案是添加行

nmap <esc><esc> :noh<return>

这符合KISS原则,不会干扰箭头键,而使用一个<esc>就可以了。在命令模式下需要一个double-<esc>(或者在插入或替换模式下需要三个-<esc>)来清除先前搜索中的突出显示,但从UI角度来看,这使得操作尽可能简单。

从…起http://twitter.com/jonbho/status/2194406821

" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[

第二行用于映射到转义键,因为Vim内部使用转义来表示特殊键。