摆脱Vim在搜索文本后的高亮显示

99
在VIM中,使用“/”命令查找文本后,该文本仍然处于高亮状态。
那么,有什么命令可以取消高亮呢?我并不想完全禁用高亮功能,但是一旦找到需要的内容,我也不想看到那些亮点。
谢谢。
答案:按下命令“:nohl”,即可取消高亮显示。

4
可能是与如何在vim中取消搜索高亮显示重复的问题。 - Conner
4
可能是 vim clear last search highlighting 的重复问题。 - the Tin Man
10个回答

150

输入以下内容:

:noh

11
这个缩写是 ":nohlsearch",可以帮助你记住它! - Cascabel
46
我已将:noh映射为:nnoremap <silent> <esc> :noh<cr><esc>。我发现按Esc键是在Vim中清除搜索高亮的自然方式。 - Peter Rincker
8
请注意,这并不会禁用搜索结果的高亮显示,它只会清除当前的高亮显示(这正是我所需要的)。 - wchargin
3
@PeterRincker据说不要映射Esc键。我遇到的问题就是这样。 - Amir Shabani

34

你可以使用以下方式切换它:

:set hls!

当然,一个快速而且简单的替代方案是搜索另一组无意义的字符:

/asdsad

我通常将一个键绑定到:set hls!,这样做很容易,并且在我使用vim的某些机器上没有安装我的配置文件时使用“胡言乱语”方法。


1
搜索无意义的内容有一些重要的缺点:它会向搜索历史记录中添加垃圾信息。这可能会对某些用户造成不便,就像冗余的高亮显示会分散注意力,影响需要完成的工作一样。 - Victor Yarema
如果你恰好打开了 'incsearch' 选项(这是一个很棒的选项),那么搜索无意义的内容会使你的屏幕在输入时随机跳动。将一些正常模式键绑定到 :nohlsearch,在所有方面都更好。 - Maëlan

27

彻底禁用搜索高亮

:set nohlsearch

清除至下一次搜索


:nohlsearch

或者使用:noh来清除高亮,直到进行新的搜索或按下nN键。


在按下自定义地图时清除

  • 按下ESC键可清除高亮。

nnoremap <esc> :noh<return><esc>
  • 按两次\(反斜杠)清除高亮

  • nnoremap \\ :noh<return>
    

    1
    我试图尽可能保持我的 ~/.vimrc 文件的最小化,但是这个不错的双反斜杠技巧找到了它的位置 -- 谢谢。 - solr

    16

    我很懒,会输入类似于 /asdf 的内容,然后按下 RETURN 键。


    12

    我在我的 .vimrc 文件中有以下内容:

    map <leader>h :set hlsearch!<cr>
    

    因此,当我输入:

    \h
    

    它可以切换高亮显示的开/关状态。


    10

    如果您不想去除高亮,最好的方法之一是清除搜索寄存器,除非您当然需要稍后再查看搜索项。这将防止您不得不重新启用高亮(编辑:noh并不会永久禁用高亮)并防止您意外地跳转。这就是我设置的方式:

    nmap <silent> ,/ :let@/=""<CR>

    此操作将在普通模式下将键序列,/映射为清除搜索寄存器@/的操作,通过将其设置为空字符串来实现。这只是已经存在的内容的替代方案。


    1
    你的回答中有两个宝石。为什么不将它们结合起来?nmap <silent> ,/ :nohlsearch<CR> - Brady Trainor

    3

    :noh 命令可以取消文本高亮。


    2

    这可能不是最合适的方法,但控制-L会重新绘制屏幕,并在此过程中清除任何高亮显示。这可以避免您必须创建另一个绑定。


    1

    除了“清除搜索寄存器”的功能,您甚至可以将搜索寄存器重置为其先前的值:

    command! -nargs=* -range S
    \ let atslash=@/|exe ':'.<line1>.','.<line2>.'s'.<q-args>|let @/=atslash
    

    然而:
    - 这不会重置:hls的先前状态。我认为这在一般情况下是不可能的。
    - 这定义了一个新命令:S,用于替换:s。您可以使用将其映射到另一个命令,但是当您向替换命令添加范围时,此方法将会中断。


    0

    is.vim插件对我来说非常方便。 它可以自动清除各种情况下的搜索,您只需要通过任何插件管理器安装它, 它就会为您完成工作,无需设置或手动更改设置。它只是有效地工作。

    is.vim gif

    (图片来自官方 Github 存储库)


    虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅链接的答案可能会失效。-【来自审查】 - ryanttb

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接