在Vim中搜索之后,我突出显示了所有出现的事件.我怎么能禁用它?我现在再做一些无法找到的乱码.
有没有办法暂时禁用突出显示,然后再次需要时重新启用它?
要关闭突出显示直到下一次搜索:
:noh
或者完全关闭突出显示:
set nohlsearch
或者,切换它:
set hlsearch! nnoremap:set hlsearch!
来自VIM文档
要清除上次使用的搜索模式:
:let @/ = ""
这不会将模式设置为空字符串,因为它会匹配到处.模式真的被清除了,就像启动Vim一样.
你可以做
:noh
或:nohlsearch
暂时禁用搜索突出显示直到下一次搜索.
我几年前在vim.org上找到了这个答案:
将以下内容添加到.vimrc:
"This unsets the "last search pattern" register by hitting return nnoremap:noh
因此,在搜索之后,只需在命令模式下再次点击返回,突出显示就会消失.
来自http://twitter.com/jonbho/status/2194406821
" Clear highlighting on escape in normal mode nnoremap:noh nnoremap ^[ ^[
映射到转义键需要第二行,因为Vim内部使用escape来表示特殊键.
我原来的解决方案(下面)很脏,很浪费.我现在用:noh
与Vim中的许多功能一样,正确的方法通常不易被发现.
-
(不要这样做)
搜索不太可能的字符序列(将主页上的键混搭):
/;alskdjf;
这可以在vim中运行,并且比@ ShaunBouckaert逻辑上更清晰的解决方案"清除最后使用的搜索模式"更容易记忆/输入:
:let @/ = ""
潜在的缺点是它会在您的搜索历史中添加垃圾.
nnoremap:noh :
这样:noh
,当我enter在搜索后点击时,我摆脱了命令行中的显示.
:就像开始输入一个新命令一样,Backspace清除它并将焦点放回编辑器窗口.
答案提议:noh
或:nohlsearch
(例如,Matt McMinn)对于暂时禁用搜索突出显示是正确的- 如原始问题中所述.
我以为我会提供一个在普通模式下有用的映射:
nnoremap:nohlsearch
默认情况下,CtrlL在Vim中清除并重绘屏幕.许多命令行程序(主要是使用GNU Readline库的程序,如Bash)使用相同的组合键来清除屏幕.此功能在后台运行的进程打印到终端,覆盖前台进程的某些部分的情况下非常有用.
此正常模式映射还会在重新绘制屏幕之前清除最近搜索词的突出显示.我发现这两个功能相互补充,并且可以方便地将两个功能CtrlL一起用于两个操作,而不是创建单独的映射来禁用搜索突出显示.
NB: noremap
使用而不是map
其他方式,映射将是递归的.
提示:我通常会重新映射Caps Lock,Ctrl以便更轻松地键入此类组合键; 这样做的细节取决于您选择的操作系统/窗口系统(这个答案是偏离主题的).以下两个技巧包括映射信息 Caps Lock,以Ctrl和Esc:
映射大写锁定以在XWindows中转义
映射大写锁定以在Windows中转义
重新映射到我的.vimrc.local文件中,快速而又脏,但非常实用:
" Clear last search highlighting map:noh
我通常映射:noh
到反斜杠键.要重新启用突出显示,只需点击n,它将再次突出显示.
每次使用搜索时,都不会突出显示匹配项 /
:set nohlsearch
:noh
或:nohlsearch
(清除直到n或被N按下)
nnoremap:noh
按下\(反斜杠)清晰亮点
nnoremap \ :noh
击中ESC两次清晰亮点
nnoremap:noh
这是我使用的(从许多不同的问题/答案中提取):
nnoremap:let @/=""
使用"double" Esc可以删除突出显示,但只要再次搜索,突出显示就会重新出现.
另一种选择:
nnoremap:noh :call clearmatches()
根据vim文档:
clearmatches()
Clears all matches previously defined by |matchadd()| and the |:match| commands.
要关闭突出显示直到下一次搜索
:noh
如果你安装了incsearch.vim插件,那么有一个设置可以在搜索后自动清除高亮显示:
let g:incsearch#auto_nohlsearch = 1
Janus为VIM和GVIM提供了许多像我这样的新手,包括
hs - toggles highlight search
这正是你所需要的.只需键入\hs
正常模式即可.(\
默认情况下,引导键映射到.)
HTH.
这有两个'必须'的插件:
明智的 - Ctrl-l
对于nohlsearch和重绘屏幕.
unimpared - [oh
,]oh
并coh
控制hlsearch.
这将在updatetime
毫秒不活动后清除搜索突出显示.
updatetime
默认为4000毫秒或4秒,但我将我的设置为10秒.重要的是要注意,updatetime
不仅仅是这样,所以在更改之前阅读文档.
function! SearchHlClear() let @/ = '' endfunction augroup searchhighlight autocmd! autocmd CursorHold,CursorHoldI * call SearchHlClear() augroup END
如果您希望能够快速启用/禁用突出显示,则可以将键映射到
" 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
结合2个最佳答案的另一个解决方案:
"To clear the last used search pattern: nnoremap:let @/ = ""
我个人喜欢映射esc
到命令:noh
如下:
map
我最近写了一篇关于Vim搜索的文章:如何搜索vanilla Vim以及增强搜索功能的最佳插件.