搜索文本后去掉 Vim 的高亮
Posted
技术标签:
【中文标题】搜索文本后去掉 Vim 的高亮【英文标题】:Get rid of Vim's highlight after searching text 【发布时间】:2011-05-21 08:02:54 【问题描述】:在 VIM 中,使用 "/" 命令找到文本后,该文本仍然突出显示。
删除它的命令是什么?我根本不想移除高亮显示功能,但是一旦我找到了我需要的东西,我不想拥有所有那些明亮的文本点。
谢谢。
【问题讨论】:
How to get rid of search highlight in vim 的可能重复项 vim clear last search highlighting的可能重复 【参考方案1】:is.vim 插件对我来说非常方便。 它会自动清除各种场景下的搜索,您只需要 通过您使用的任何插件管理器安装它,它会为您完成工作, 无需进行任何设置或手动更改设置。它只是工作。
(图片取自官方github仓库)
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review【参考方案2】::noh
将去掉突出显示的文本。
【讨论】:
【参考方案3】:完全禁用搜索突出显示
:set nohlsearch
清除直到下次搜索
:nohlsearch
或简称:noh
。这将清除突出显示,直到执行新的搜索或按下 n 或 N
按自定义地图清除
点击 ESC 键清除突出显示
nnoremap <esc> :noh<return><esc>
按 \(反斜杠)两次清除突出显示
nnoremap \\ :noh<return>
【讨论】:
我尽量让我的 ~/.vimrc 保持最小,但是这个漂亮的双反斜杠技巧在那里找到了一个地方 - 谢谢。【参考方案4】:除了“清除搜索寄存器”之外,您甚至可以将搜索寄存器重置为之前的值:
command! -nargs=* -range S
\ let atslash=@/|exe ':'.<line1>.','.<line2>.'s'.<q-args>|let @/=atslash
但是:
- 这不会重置:hls
的先前状态。我不相信这通常是可能的。
- 这定义了一个新命令:S
,用于代替:s
。您可以使用 cabbrev
将一个映射到另一个,但是当您将范围添加到替换命令时,这会中断。
【讨论】:
【参考方案5】:你可以切换它
:set hls!
当然,一个快速而肮脏的替代方法是再次搜索胡言乱语:
/asdsad
我通常将一个密钥绑定到:set hls!
以简化此操作,并在我在一台未安装我的配置文件的机器上使用 vim 时使用乱码方法。
【讨论】:
搜索乱码有一些重要的缺点:它会在搜索历史中添加垃圾。这对某些用户来说可能不方便,就像多余的突出显示会分散必须完成的工作一样。 如果您碰巧打开了'incsearch'
选项(这是一个很好的选择),那么搜索乱码将使您的屏幕在输入乱码时随机跳动。将一些普通模式键绑定到:nohlsearch
在各个方面都好得多。【参考方案6】:
我很懒,输入/asdf
之类的内容,然后按RETURN
键。
【讨论】:
【参考方案7】:如果您不想删除突出显示,最好的方法之一是清除搜索寄存器,除非您以后需要搜索项。这将防止您必须重新启用突出显示并(编辑:noh
不会永久禁用突出显示)防止您意外跳来跳去。这就是我的设置方式:
nmap <silent> ,/ :let@/=""<CR>
它的作用是在正常模式下映射键序列,/
,通过将其设置为空字符串来清除搜索寄存器@/
。这只是已经说明的替代方案。
【讨论】:
您的答案中有两个亮点。为什么不把它们结合起来?nmap <silent> ,/ :nohlsearch<CR>
.【参考方案8】:
我的 .vimrc 中有这个:
map <leader>h :set hlsearch!<cr>
所以当我输入时:
\h
它打开/关闭突出显示。
【讨论】:
【参考方案9】:键入:
:noh
【讨论】:
...:nohlsearch
的缩写,应该可以帮助你记住它!
我将:noh
映射为:nnoremap <silent> <esc> :noh<cr><esc>
我发现点击转义是清除搜索突出显示的一种自然 vim 方式。
请注意,这不会禁用搜索突出显示,它只是清除当前突出显示(这是我想要的)。
@PeterRincker 这是said 不映射Esc
。 A problem I encountered doing this.以上是关于搜索文本后去掉 Vim 的高亮的主要内容,如果未能解决你的问题,请参考以下文章