Vim清除最后的search高亮显示

在Vim中进行search后,我突出显示了所有的事件。 我如何禁用? 我现在再去search一些无法find的乱码。

有没有办法暂时禁用突出显示,然后在需要时重新启用?

27 Solutions collect form web for “Vim清除最后的search高亮显示”

要closures突出显示,直到下一个search:

:noh 

或者完全closures高亮显示:

 set nohlsearch 

或者,切换它:

 set hlsearch! nnoremap <F3> :set hlsearch!<CR> 

来自VIM文档

清除上次使用的search模式:

 :let @/ = "" 

这不会将模式设置为空string,因为这将匹配到处。 模式真的被清除,就像启动Vim时一样。

你可以做

 :noh 

或者:nohlsearch暂时禁用search突出显示,直到下一次search。

几年前我在vim.org上find了这个答案:

将以下内容添加到.vimrc中:

 "This unsets the "last search pattern" register by hitting return nnoremap <CR> :noh<CR><CR> 

因此,在search之后,只需在命令模式下再次返回,高亮消失。

http://twitter.com/jonbho/status/2194406821

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

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

search不太可能的字符序列(混搭主页上的键):

/;alskdjf;

这在vim和更less的工作,并且比@ ShaunBouckaert的逻辑清洁解决scheme“清除最后使用的search模式”更容易记住/types:

:let @/ = ""

一个潜在的缺点是,它会增加垃圾到您的search历史logging。

重新映射到我的.vimrc.local文件,快速,肮脏,但function非常强大:

 " Clear last search highlighting map <Space> :noh<cr> 
 nnoremap <cr> :noh<CR><CR>:<backspace> 

这样我就摆脱了:noh在命令行中显示的:noh ,当search后按回车

就像开始input一个新的命令一样, Backspace清除它并把焦点放回编辑器窗口。

我通常将映射到反斜杠键。 要重新启用突出显示,只需点击n ,它会再次突出显示。

提议的答案:noh:nohlsearch (例如,Matt McMinn's)是正确的,用于暂时停用search突出显示 – 正如原始问题中所述。

我以为我会贡献一个映射,我发现有用的正常模式:

 nnoremap <CL> :nohlsearch<CR><CL> 

默认情况下,Vim中的Ctrl L清除并重画屏幕。 许多命令行程序(主要是那些使用GNU Readline库的程序 ,例如Bash)使用相同的组合键清除屏幕。 在后台运行的进程打印到terminal的情况下,该function非常有用,覆盖了前台进程的一部分。

此正常模式映射也会在重新绘制屏幕之前清除最近search词的高亮显示。 我发现这两个function相辅相成,使用一个Ctrl L来同时执行这两个操作,而不是创build一个单独的映射来禁用search高亮显示。

NB:使用 noremap而不是map ,否则映射将是recursion的。

提示:我通常将Caps Lock重新映射到Ctrl ,以便于键入这些组合键; 这样做的细节取决于你select的操作系统/窗口系统(这个答案是脱离主题)。 以下提示都包含将Caps Lock映射到Ctrl以及Esc的信息

  • 地图大小写locking在XWindows中转义
  • 地图大小写locking在Windows中逃脱

永久禁用search高亮显示

匹配不会突出显示每当你使用/

 :set nohlsearch 

清除高亮显示,直到下一个search

 :noh 

或者:nohlsearch (清除,直到nN被按下)


按下ESC清除高亮显示

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

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

  • 清除按下\ (反斜杠)

     nnoremap \ :noh<return> 
  • 清除高亮按ESC两次

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

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

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

用“double” Esc删除突出显示,但只要再次search,突出显示就会再次出现。


另一种select:

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

根据vim文档:

clearmatches()

  Clears all matches previously defined by |matchadd()| and the |:match| commands. 

VIM和GVIM的Janus拥有许多像我这样的新手的烘焙产品

 <leader>hs - toggles highlight search 

这正是你所需要的。 只需在正常模式下input\hs 。 (默认情况下,引导键被映射到\

HTH。

要closures突出显示,直到下一个search

 :noh 

视觉例证

这会在更新时间毫秒之后清除search突出显示。

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

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

结合2个最佳答案的另一个解决scheme:

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

如果您希望能够快速 启用/禁用突出显示,则可以将密钥映射到

 " Press F4 to toggle highlighting on/off, and show current value. :noremap <F4> :set hlsearch! hlsearch?<CR> 

只需将上面的代码片段放到.vimrc文件中。

这是我用一个关键笔画显示和隐藏search高亮的最方便的方法

有关更多信息,请查阅文档http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches

有两个“必须”插件:

  1. 明智的 – Ctrl-l为nohlsearch和重绘屏幕。
  2. 不受打击 – [oh]oh ,控制hlsearch。

如果您安装了incsearch.vim插件 ,那么在search后会有一个设置自动清除高亮:

 let g:incsearch#auto_nohlsearch = 1 

在这里输入图像描述

我认为混合@ ShaunBouckaert和2009年3月19日在16:22答案是一个很好的妥协:

 " Reset highlighted search nnoremap <CR> :let @/=""<CR><CR> 

Enter键 ,突出显示的文本不再突出显示,search突出显示仍处于启用状态。

您可以使用:noremap来打开/closuressearch结果,像这样

:noremap <F3> :set hls! hls?<CR>

我只是使用下面的简单nohl,并不需要插件。

:nohl

基于@ baruch-even回答,可以在正常模式下使用ESC双击删除search项:

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

我的猜测是,原来的问题不是禁用search高亮显示,而是简单地清除上次search中的高亮显示。 寻找原始海报中提到的乱码string的解决scheme,我已经使用了一段时间来清除以前的search中的突出显示,但是它很丑,很麻烦。

我发现将nnoremap ...添加到〜/ .vimrc的一些build议在启动时会将vim置入replace模式,这并不是我想要的。 我find的最简单的解决scheme是添加行

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

到我的〜/ .vimrc。 这是根据KISS原则进行的,并且不会干扰使用单个<esc>的箭头键。 在命令模式下(或者插入或replace模式下的triple- <esc>)需要双<esc>来清除之前search的高亮,但是从UI的angular度来看,这使得操作尽可能简单。

我在~/.vimrc使用了以下内容

nnoremap <Leader><space> :noh<Enter>

这使得清除当前突出显示的search变得非常容易和快速。 我的领导者键被映射到\所以这使得我的右手小指和拇指很容易执行操作。

而不是依靠一些编程到你的.vimrc文件(这不适用于其他安装)的键盘映射,只需使用这个黑客:重新search不可能的东西:

 /asdfsddsdf 

安装vim-cool 。 它被创build来解决这个特定的问题。 当你移动光标时,它将closures突出显示。

  • 如何暂时退出vim并返回
  • 学习Vim有什么好处?
  • Vim中.ejs文件的语法高亮显示
  • git忽略vim临时文件
  • 我如何在vim中自动格式化/缩进C代码?
  • 更智能的Vim恢复?
  • 我如何设置我的vim-airline或vim-powerline
  • 如何将选定的行复制到vim中的剪贴板
  • 如何在Vim中启用自动折叠?
  • Vim除了在所有文件types上运行autocmd
  • 转到vim文件中的第一行?