问:
想要改进这篇文章?提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。没有足够细节的答案可能会被编辑或删除。
在 Vim 中进行搜索后,我会突出显示所有出现的事件。我怎样才能禁用它?我现在再次搜索无法找到的乱码。
有没有办法暂时禁用突出显示,然后在需要时重新启用它?
答1:
huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求
要在下一次搜索之前关闭突出显示:
:noh
或者完全关闭突出显示:
set nohlsearch
或者,切换它:
set hlsearch!
nnoremap :set hlsearch!
从这个答案和评论中并不清楚这一点:请注意,set nohlsearch 也会禁用下一次搜索的突出显示。 :noh 的行为非常不同:当您执行新搜索时,甚至当您执行与当前搜索相关的操作时(例如,当您键入 n 转到下一项时),突出显示将自动重新启用。
我把它映射到 因为这是我清理屏幕的首选按键。这是我的映射:nmap :nohlsearch:match:diffupdate
@Rainning,这是您要放入 .vimrc 的内容吗?如果没有,您可以在 .vimrc 中添加什么以在每次搜索后永久启用 :noh?
对于 2021 年的读者:nnoremap :noh。
@LiamClink:我已经更新了命令,应该是 nnoremap。是的,你应该把它放在你的 .vimrc 中。我不明白你的问题,因为下次你在键盘上敲/并输入一个新的关键字进行搜索时,旧的都被替换了,所以你只需在每次搜索后由自己清理.
答2:
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
从VIM Documentation
要清除上次使用的搜索模式:
:let @/ = ""
这不会将模式设置为空字符串,因为它会在任何地方匹配。模式真的很清晰,就像启动 Vim 时一样。
...据我了解,这将是解决他的问题的更好方法。
这就是我要找的!我投了赞成票,这个问题有点模糊。这使我认为这就是他想要的:“我现在再次搜索无法找到的乱码”。因为那是我正在做的清除搜索,但没有禁用它,所以下一次搜索会再次突出显示。
这就是我认为的问题...这是我为加快清除搜索字符串(并因此删除所有突出显示)而执行的命令::command C let @/="" 使用此命令可让您键入 :C 以清除搜索字符串... 非常快,不会影响以后的搜索或突出显示。
@jcreamer898,请参阅有关“寄存器”(:he registers)的 vim 帮助。 Vim 有几个不同的内置寄存器来保存文本,有时用于提取数据,有时用于最后搜索等。当您进行搜索时,vim 将模式放入“/”寄存器中,您可以使用 @/ 引用它。您还可以使用 @regname=value 为寄存器分配值,其中 regname 是寄存器的名称。因此,@/="" 只是将寄存器 "/" 设置为空字符串(除了 "/" 寄存器,如果它包含空字符串,vim 将清除最后一次搜索)。
将此添加到您的 .vimrc 以获得 Ctrl+/ 以清除上次搜索:noremap :let @/ = ""
答3:
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
你可以做
:noh
或 :nohlsearch 暂时禁用搜索突出显示,直到下一次搜索。
谢谢,这很有帮助......返回突出显示的任何命令?
:nohs 只是关闭当前突出显示。如果您有 :set hlsearch 那么它将继续突出显示您的搜索。
我认为这就是 OP 正在寻找的内容(尽管 Shaun 的回答也有效)。我赞成这个更短。我知道他接受了 nohls 的答案,但设置它会禁用所有搜索突出显示,即使之后尝试了另一个搜索。
这可能是 OP 首先想要的,并且是最短、最好的答案恕我直言。
即使在这凡间也可以达到完美!我会使用它而不是 :help,并且不想污染 : nnoremap :noh
答4:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
几年前我在 vim.org 上找到了这个答案:
将以下内容添加到您的 .vimrc 中:
"This unsets the "last search pattern" register by hitting return
nnoremap :noh
因此,在您搜索后,只需在命令模式下再次按回车键,突出显示就会消失。
我认为这是一个比实际被接受的解决方案更好的解决方案——无论是这个解决方案还是映射到 的另一个解决方案。
这是对“nnoremap :noh”的更好回答,因为它不会导致奇怪的行为。
需要注意的重要一点是,请确保不要在重映射的右侧放置任何评论。它们将被解释为重映射的命令,而不是注释。
评论错误;该命令不会取消设置最后一个搜索模式,而只是关闭当前结果的突出显示;您可以点击 n 查找下一个匹配项(将再次突出显示)。顺便说一句,在编写脚本时,我会避免使用缩写形式,而是写 :nohlsearch。
添加 以避免显示闪烁并在命令行中留下 noh - :nnoremap :nohlsearch
答5:
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!
来自http://twitter.com/jonbho/status/2194406821
" Clear highlighting on escape in normal mode
nnoremap :noh
nnoremap ^[ ^[
mapping to the escape key 需要第二行,因为 Vim 内部使用转义来表示特殊键。
为了清楚起见,这使您可以通过按 Escape 键清除搜索突出显示
出于某种原因,这使我的终端 vim 启动时就像按下了“c”一样。有任何想法吗?
当我尝试它时,这导致了一些非常奇怪的行为:在启动时,常规的 vim 运动(例如 j,k)会导致行被删除。 nnoremap :noh 没有引起这些问题。我无法找到根本原因。
嗯,我遇到了和上面一样的问题。除非您喜欢随机删除文本,否则不要在未经测试的情况下按原样使用它...
使用 "nnoremap :noh" 使 vim 总是以 "REPLACEMENT" 模式启动。
答6:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
我最初的解决方案(下)是肮脏和浪费的。我现在使用 :noh
像 Vim 中的许多特性一样,正确的方法通常不容易被发现。
–
(不要这样做)
搜索一个不太可能的字符序列(混合主行上的键):
/;alskdjf;
这适用于 vim 和更少,并且比@ShaunBouckaert 逻辑上更简洁的解决方案“清除最后使用的搜索模式”更容易记住/输入:
:let @/ = “”
一个潜在的缺点是它会在您的搜索历史记录中添加垃圾内容。
这不仅是一个肮脏的解决方案(我自己直到现在才使用它,没有冒犯),另一个缺点是它在窗口底部添加了一个丑陋的红色横幅,上面写着“找不到图案”,这几乎和突出显示一样烦人本身并需要丢弃进一步的操作(例如“搜索+退格”)。
它也可能需要几秒钟,因为它实际上会搜索整个文件的其余部分。如果文件很大,那真的很烦人。当然,你可以标记你当前的位置,跳到开头,然后向后搜索一个字符,但这同样很脏。
这是大多数人在了解 :nohl 命令之前会使用的解决方案。一旦我了解了后者,我立即停下来进行这些搜索。
这不是答案;它只是建议做 OP 已经做过的事情:“我现在再次搜索一些无法找到的乱码。”
如果您想要一个简单而简短的模式,只需使用 /$4。它不仅不可能匹配任何东西,而且实际上完全不可能。 $ 必须始终跟在换行符之后或者是文件的结尾,并且 4 既不是换行符也不是文件的结尾。 (具体是4的原因,就是在同一个键上,所以打字真的很方便)
答7:
huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感
提出 :noh 或 :nohlsearch 的答案(例如,Matt McMinn 的)对于 暂时禁用搜索突出显示是正确的 - 正如在原始问题中所问的那样。
我想我会贡献一个我觉得在普通模式下有用的映射:
nnoremap :nohlsearch
默认情况下,Vim 中的 CtrlL 清除并重绘屏幕。许多命令行程序(主要是那些使用 GNU Readline library 的程序,例如 Bash)使用相同的组合键来清除屏幕。此功能在后台运行的进程打印到终端,覆盖前台进程的部分的情况下很有用。
此正常模式映射还会在重绘屏幕之前清除最近搜索词的突出显示。我发现这两个功能相辅相成,将一个 CtrlL 一起用于两个操作而不是创建单独的映射来禁用搜索突出显示很方便。
注意: 使用 noremap 而不是 map,否则映射将是递归的。
提示:我通常将 Caps Lock 重新映射为 Ctrl,以便更轻松地键入此类组合键;执行此操作的详细信息取决于您选择的操作系统/窗口系统(并且与此答案无关)。以下两个提示都包括有关将 Caps Lock 映射到 Ctrl 以及 Esc 的信息:
地图大写锁定以在 XWindows 中转义
地图大写锁定以在 Windows 中转义
答8:
huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求
nnoremap silent :noh
这样,在搜索后点击 enter 时,我就摆脱了命令行中显示的 :noh 。
就像开始输入一个新命令,Backspace 将其清除并将焦点放回编辑器窗口。
谢谢你。出现在左下角的“:noh”让我发疯了,该死的强迫症。
我试图通过执行 nnoremap :noh 将其映射到移动的 cr 但它不起作用,你知道它为什么不起作用吗?
我怀疑您不能将 shift 与 return 结合起来,但老实说我不知道。
@CharlieParker IIRC 您只能在 [a-z] 和此类字符上使用 shift。
除了 :,你可以在 nnoremap 之后添加 来告诉 Vim 不要在命令区域显示任何输出:nnoremap :noh。
答9:
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!
重新映射到我的 .vimrc.local 文件中,快速而肮脏但非常实用:
" Clear last search highlighting
map :noh
答10:
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
永久禁用搜索突出显示
每当您使用 / 进行搜索时,匹配项都不会突出显示
:set nohlsearch
清除突出显示直到下一次搜索
:noh
或 :nohlsearch(清除直到按下 n 或 N)
按 ESC 清除突出显示
nnoremap :noh
按另一个键或自定义地图清除突出显示
按 \ (反斜杠) nnoremap \ :noh 清除突出显示
按两次 ESC 清除高亮显示 nnoremap :noh
nnoremap :noh 解决方案在 GUI vim 中运行良好,但在终端中运行 vim 时会导致严重问题使用箭头键和其他 ESC 编码键。 不要将其放入您的 ~/.vimrc 中而不将其包装在 if has('gui_running') ... end 中。还可以考虑添加 以避免在状态栏中闪烁 :noh 命令。
答11:
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
我通常将 :noh 映射到反斜杠键。要重新启用突出显示,只需点击 n,它将再次突出显示。
原文链接:https://www.huntsbot.com/qa/R3LP/vim-clear-last-search-highlighting?lang=zh_CN&from=csdn
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!