当前位置:  开发笔记 > 编程语言 > 正文

Vim清除上次搜索突出显示

如何解决《Vim清除上次搜索突出显示》经验,为你挑选了20个好方法。

在Vim中搜索之后,我突出显示了所有出现的事件.我怎么能禁用它?我现在再做一些无法找到的乱码.

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



1> Mykola Golub..:

要关闭突出显示直到下一次搜索:

:noh

或者完全关闭突出显示:

set nohlsearch

或者,切换它:

set hlsearch!

nnoremap  :set hlsearch!


这个答案和评论并不清楚:注意`set nohlsearch`也会禁用下一次搜索的突出显示.`:noh`的行为非常不同:当您执行新搜索时,甚至当您执行与当前搜索相关的操作时(例如,当您键入`n`转到下一个项目时),突出显示将自动重新启用.
令人讨厌的是,它可以像搜索乱码字一样快:/ oajf3w9,因为它是键入:noh.我喜欢@avocade的空间键映射解决方案:noh
通过设置nohlsearch,当重启vim时突出显示返回.`:能乐更好.
没有解释这些实际做了什么和后果.感谢@SkippyleGrandGourou解释其中的一些内容.
为了它的价值,我把它映射到''\ /'`(或任何你的领导者):`map /:nohlsearch `
我只是快速输入/ kkk来摆脱搜索突出显示,因为你在文件中有"kkk"的可能性非常低.

2> Shaun Boucka..:

来自VIM文档

要清除上次使用的搜索模式:

:let @/ = ""

这不会将模式设置为空字符串,因为它会匹配到处.模式真的被清除了,就像启动Vim一样.


......据我理解,这将是他问题的更好解决方案.
这就是我认为的问题......这是我用来加快清除搜索字符串的命令(因此删除了所有高亮点):`:command C let @/=""`使用它可以让你输入`:C`清除搜索字符串...非常快,不会影响将来的搜索或突出显示.
@ jcreamer898,请参阅vim帮助"寄存器"(`:他注册`).Vim有几个不同的内置寄存器,用于保存文本,有时用于抽取数据,有时用于最后一次搜索等.当你进行搜索时,vim将模式放在"/"寄存器中,你用`@ /`引用它.您还可以使用`@regname = value`为寄存器赋值,其中`regname`是寄存器的名称.所以,`@/=""`只是将寄存器"​​/"设置为一个空字符串(除了对于"/"寄存器vim将清除最后一次搜索,如果它包含一个空字符串).
这不会禁用搜索,它会清除模式.
这就是我要找的!我投票了,问题有点模糊.这让我觉得这就是他想要的:"我现在再做一次寻找无法找到的胡言乱语".因为这是我正在做的清除搜索,但不禁用它,以便下一次搜索将再次突出显示.
将其添加到.vimrc中以获取Ctrl + /以清除最后一次搜索:`noremap :let @/=""`
通过打开和关闭突出显示,您的答案确实可以更好地回答他的问题.但是,如果问题只是在找到您要查找的内容后,最后一次搜索仍然突出显示,这是我最初理解的问题,那么我的方法可以让您清楚搜索.

3> Matt McMinn..:

你可以做

:noh

:nohlsearch暂时禁用搜索突出显示直到下一次搜索.


:nohs只关闭当前的突出显示.如果你有:设置hlsearch,那么它将继续突出显示你的搜索.
我认为这是OP正在寻找的东西(虽然肖恩的答案也有效).我推荐这个更短的时间.我知道他接受了nohls的答案,但设置它将禁用所有搜索突出显示,即使之后尝试了另一次搜索.
这可能是OP首先想要的,也是最短,最好的答案恕我直言.
谢谢,这是有用的...任何返回突出显示的命令?

4> 小智..:

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

将以下内容添加到.vimrc:

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

因此,在搜索之后,只需在命令模式下再次点击返回,突出显示就会消失.


我认为这是一个比实际被接受的更好的解决方案 - 无论是这一个还是另一个映射到的解决方案.
添加以避免显示闪烁并在命令行中留下noh - :nnoremap :nohlsearch
对于"nnoremap :noh ",这是一个更好的答案,因为它不会导致奇怪的行为.
需要注意的一点是,请确保不要在重映射的右侧添加任何注释.它们将被解释为重映射的命令而不是注释.
评论错了; 该命令不会**取消设置上一个搜索模式,只是关闭当前结果的突出显示; 你可以点击"n"找到下一个出现的位置(将再次突出显示).顺便说一句,在编写脚本时,我会避免使用缩写形式,而是编写`:nohlsearch`.
我喜欢这个,但为什么两个`?如果要将光标保持在原位,请仅使用1""
或者将其绑定到Ctrl + L,它清除并重绘屏幕:`nnoremap :noh `
@Abdo然后你可以*从不*使用Enter向下移动.

5> Baruch Even..:

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

" Clear highlighting on escape in normal mode
nnoremap  :noh
nnoremap ^[ ^[

映射到转义键需要第二行,因为Vim内部使用escape来表示特殊键.


当我尝试它时,这会引起一些非常奇怪的行为:在启动时,常规的vim移动(例如j,k)将导致线被移除.nnoremap :noh 没有导致这些问题.我无法追查根本原因.
为了清楚起见,这可以让您通过按Esc键清除搜索突出显示
嗯,我和上面的问题一样.除非你想随意删除你的文字,否则不要在没有测试的情况下使用它.
由于某种原因,这使得我的终端vim启动就像按下"c"一样.有任何想法吗?
使用"nnoremap :noh "使vim始终以"REPLACEMENT"模式启动.
[这个问题](http://stackoverflow.com/questions/11940801/mapping-esc-in-vimrc-causes-bizzare-arrow-behaviour)详细阐述了评论者指出的这种方法的一些问题.
我将此功能添加到我的`ctrl-l`键中,该键通常会清除/重绘屏幕.重新映射`esc`总是很棘手 - 我会避免它,因为几乎所有终端都依赖于没有固有代码的键的转义键代码(如箭头键等).
`nnoremap :noh `解决方案在GUI vim中运行良好,但在终端中运行vim时会导致箭头键和其他ESC编码密钥出现严重问题.*如果没有将它包装在`if has('gui_running')`...`end`中,请不要将它放在你的*`〜/ .vimrc`中.

6> millerdev..:

我原来的解决方案(下面)很脏,很浪费.我现在用:noh

与Vim中的许多功能一样,正确的方法通常不易被发现.

-

(不要这样做)

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

/;alskdjf;

这可以在vim中运行,并且比@ ShaunBouckaert逻辑上更清晰的解决方案"清除最后使用的搜索模式"更容易记忆/输入:

:let @/ = ""

潜在的缺点是它会在您的搜索历史中添加垃圾.


这不仅是一个肮脏的解决方案(我自己直到现在使用,没有冒犯),另一个缺点是它在窗口底部添加了一个丑陋的红色横幅,说"找不到图案",这几乎和突出显示一样令人讨厌本身并需要进一步采取行动(例如"搜索+退格").
这不是答案; 它只是建议做OP已做的事情:"我现在再做一次寻找无法找到的乱码."
它也可能需要几秒钟,因为它实际搜索文件的其余部分.如果文件很大,这真的很烦人.当然,你可以标记你当前的位置,跳到开头,然后向后搜索一个角色,但这同样很脏.
这是大多数人在**学习`:nohl`命令之前会使用的解决方案.一旦我了解了后者,我立即停下来进行搜索.

7> sjas..:
nnoremap  :noh:

这样:noh,当我enter在搜索后点击时,我摆脱了命令行中的显示.

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


不要执行`:`,你可以在`nnoremap`之后添加``告诉Vim不要在命令区域显示任何输出:`nnoremap :noh `.
谢谢.左下角出现的":noh"让我发疯,该死的强迫症.

8> Anthony G - ..:

答案提议:noh:nohlsearch(例如,Matt McMinn)对于暂时禁用搜索突出显示是正确的- 如原始问题中所述.

我以为我会提供一个在普通模式下有用的映射:

nnoremap  :nohlsearch

默认情况下,CtrlL在Vim中清除并重绘屏幕.许多命令行程序(主要是使用GNU Readline库的程序,如Bash)使用相同的组合键来清除屏幕.此功能在后台运行的进程打印到终端,覆盖前台进程的某些部分的情况下非常有用.

此正常模式映射还会在重新绘制屏幕之前清除最近搜索词的突出显示.我发现这两个功能相互补充,并且可以方便地将两个功能CtrlL一起用于两个操作,而不是创建单独的映射来禁用搜索突出显示.

NB: noremap使用而不是map其他方式,映射将是递归的.

提示:我通常会重新映射Caps Lock,Ctrl以便更轻松地键入此类组合键; 这样做的细节取决于您选择的操作系统/窗口系统(这个答案是偏离主题的).以下两个技巧包括映射信息 Caps Lock,以CtrlEsc:

映射大写锁定以在XWindows中转义

映射大写锁定以在Windows中转义



9> avocade..:

重新映射到我的.vimrc.local文件中,快速而又脏,但非常实用:

" Clear last search highlighting
map  :noh



10> caveman..:

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



11> Sheharyar..:

永久禁用搜索突出显示

每次使用搜索时,都不会突出显示匹配项 /

:set nohlsearch

清除突出显示直到下一次搜

:noh

:nohlsearch(清除直到n或被N按下)


按下清除突出显示 ESC

nnoremap  :noh

按下另一个键或自定义地图时清晰突出显示

按下\(反斜杠)清晰亮点

nnoremap \ :noh

击中ESC两次清晰亮点

nnoremap  :noh


`nnoremap <silent> <esc>:noh <return> <esc>`解决方案在GUI vim中效果很好,但是在终端中运行vim时,箭头键和其他ESC编码键会造成严重问题。*不要把它放在你的`〜/ .vimrc`中,而不要将它包装在`if has('gui_running')`...`end`中。还可以考虑添加`<silent>`,以避免在状态栏中闪烁`:noh'命令。

12> Pablo Olmos ..:

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

nnoremap   :let @/=""

使用"double" Esc可以删除突出显示,但只要再次搜索,突出显示就会重新出现.


另一种选择:

nnoremap   :noh :call clearmatches()

根据vim文档:

clearmatches()

    Clears all matches previously defined by |matchadd()| and the

    |:match| commands.



13> arcseldon..:

要关闭突出显示直到下一次搜索

:noh

视觉插图



14> Deqing..:

如果你安装了incsearch.vim插件,那么有一个设置可以在搜索后自动清除高亮显示:

let g:incsearch#auto_nohlsearch = 1

在此输入图像描述



15> Paul-Sebasti..:

Janus为VIM和GVIM提供了许多像我这样的新手,包括

hs - toggles highlight search

这正是你所需要的.只需键入\hs正常模式即可.(\默认情况下,引导键映射到.)

HTH.



16> dkiyatkin..:

这有两个'必须'的插件:

    明智的 - Ctrl-l对于nohlsearch和重绘屏幕.

    unimpared - [oh,]ohcoh控制hlsearch.



17> Kevin Cox..:

这将在updatetime毫秒不活动后清除搜索突出显示.

updatetime默认为4000毫秒或4秒,但我将我的设置为10秒.重要的是要注意,updatetime不仅仅是这样,所以在更改之前阅读文档.

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



18> Amaynut..:

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

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

只需将上面的代码片段放在.vimrc文件中即可.

这是我用一键击键显示和隐藏搜索亮点最方便的方式

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



19> skywinder..:

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

"To clear the last used search pattern:
nnoremap  :let @/ = ""



20> Matthieu..:

我个人喜欢映射esc到命令:noh如下:

map :noh

我最近写了一篇关于Vim搜索的文章:如何搜索vanilla Vim以及增强搜索功能的最佳插件.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有