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

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


当前回答

基于@baruch偶数答案,您可以在正常模式下双击ESC删除搜索项,方法如下:

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[

其他回答

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

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

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

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

nohlsearch的任何解决方案都不受欢迎,下一次搜索呢?最好的答案是由let@/=“”创建的,但我不喜欢mac上的按功能键映射,所以这里是我的答案:

let mapleader=','
let g:mapleader=','
nnoremap <leader>cs :let @/ = ""<cr>
nnoremap silent <cr> :noh<cr><cr>

这样我就可以在搜索后按回车键时,去掉命令行中显示的noh。

:就像开始输入一个新命令,Backspace将其清除并将焦点放回编辑器窗口。

我最初的解决方案(下图)既肮脏又浪费。我现在使用:否

像Vim中的许多功能一样,正确的方法通常不容易发现。

--

(不要这样做)

搜索不太可能的字符序列(将主行上的键混合):

/;alskdjf;

这在vim和更少的情况下工作,并且比@ShaunBouckaert逻辑上更清晰的解决方案“清除上次使用的搜索模式”更容易记住/键入:

:let@/=“”

一个潜在的缺点是,它会将垃圾添加到您的搜索历史记录中。

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

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

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