Myk*_*yev 1512
要关闭突出显示直到下一次搜索:
:noh
Run Code Online (Sandbox Code Playgroud)
或者完全关闭突出显示:
set nohlsearch
Run Code Online (Sandbox Code Playgroud)
或者,切换它:
set hlsearch!
nnoremap <F3> :set hlsearch!<CR>
Run Code Online (Sandbox Code Playgroud)
Sha*_*ert 670
来自VIM文档
要清除上次使用的搜索模式:
:let @/ = ""
Run Code Online (Sandbox Code Playgroud)
这不会将模式设置为空字符串,因为它会匹配到处.模式真的被清除了,就像启动Vim一样.
Mat*_*inn 574
你可以做
:noh
Run Code Online (Sandbox Code Playgroud)
或:nohlsearch暂时禁用搜索突出显示直到下一次搜索.
小智 290
我几年前在vim.org上找到了这个答案:
将以下内容添加到.vimrc:
"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>
Run Code Online (Sandbox Code Playgroud)
因此,在搜索之后,只需在命令模式下再次点击返回,突出显示就会消失.
Bar*_*ven 136
来自http://twitter.com/jonbho/status/2194406821
" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[
Run Code Online (Sandbox Code Playgroud)
映射到转义键需要第二行,因为Vim内部使用escape来表示特殊键.
mil*_*dev 38
我原来的解决方案(下面)很脏,很浪费.我现在用:noh
与Vim中的许多功能一样,正确的方法通常不易被发现.
-
(不要这样做)
搜索不太可能的字符序列(将主页上的键混搭):
/;alskdjf;
这可以在vim中运行,并且比@ ShaunBouckaert逻辑上更清晰的解决方案"清除最后使用的搜索模式"更容易记忆/输入:
:let @/ = ""
潜在的缺点是它会在您的搜索历史中添加垃圾.
sja*_*jas 32
nnoremap <cr> :noh<CR><CR>:<backspace>
Run Code Online (Sandbox Code Playgroud)
这样:noh,当我enter在搜索后点击时,我摆脱了命令行中的显示.
:就像开始输入一个新命令一样,Backspace清除它并将焦点放回编辑器窗口.
Ant*_*ica 31
答案提议:noh或:nohlsearch(例如,Matt McMinn)对于暂时禁用搜索突出显示是正确的- 如原始问题中所述.
我以为我会提供一个在普通模式下有用的映射:
nnoremap <C-L> :nohlsearch<CR><C-L>
Run Code Online (Sandbox Code Playgroud)
默认情况下,CtrlL在Vim中清除并重绘屏幕.许多命令行程序(主要是使用GNU Readline库的程序,如Bash)使用相同的组合键来清除屏幕.此功能在后台运行的进程打印到终端,覆盖前台进程的某些部分的情况下非常有用.
此正常模式映射还会在重新绘制屏幕之前清除最近搜索词的突出显示.我发现这两个功能相互补充,并且可以方便地将两个功能CtrlL一起用于两个操作,而不是创建单独的映射来禁用搜索突出显示.
NB: noremap使用而不是map其他方式,映射将是递归的.
提示:我通常会重新映射Caps Lock,Ctrl以便更轻松地键入此类组合键; 这样做的细节取决于您选择的操作系统/窗口系统(这个答案是偏离主题的).以下两个技巧包括映射信息 Caps Lock,以Ctrl和Esc:
avo*_*ade 30
重新映射到我的.vimrc.local文件中,快速而又脏,但非常实用:
" Clear last search highlighting
map <Space> :noh<cr>
Run Code Online (Sandbox Code Playgroud)
She*_*yar 23
每次使用搜索时,都不会突出显示匹配项 /
:set nohlsearch
Run Code Online (Sandbox Code Playgroud)
:noh
Run Code Online (Sandbox Code Playgroud)
或:nohlsearch(清除直到n或被N按下)
nnoremap <esc> :noh<return><esc>
Run Code Online (Sandbox Code Playgroud)
按下\(反斜杠)清晰亮点
nnoremap \ :noh<return>
Run Code Online (Sandbox Code Playgroud)击中ESC两次清晰亮点
nnoremap <esc><esc> :noh<return>
Run Code Online (Sandbox Code Playgroud)Pab*_* C. 15
这是我使用的(从许多不同的问题/答案中提取):
nnoremap <silent> <Esc><Esc> :let @/=""<CR>
Run Code Online (Sandbox Code Playgroud)
使用"double" Esc可以删除突出显示,但只要再次搜索,突出显示就会重新出现.
另一种选择:
nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>
Run Code Online (Sandbox Code Playgroud)
根据vim文档:
clearmatches()
Run Code Online (Sandbox Code Playgroud)Clears all matches previously defined by |matchadd()| and the |:match| commands.
如果你安装了incsearch.vim插件,那么有一个设置可以在搜索后自动清除高亮显示:
let g:incsearch#auto_nohlsearch = 1
Run Code Online (Sandbox Code Playgroud)
Janus为VIM和GVIM提供了许多像我这样的新手,包括
<leader>hs - toggles highlight search
Run Code Online (Sandbox Code Playgroud)
这正是你所需要的.只需键入\hs正常模式即可.(\默认情况下,引导键映射到.)
HTH.
这将在updatetime毫秒不活动后清除搜索突出显示.
updatetime默认为4000毫秒或4秒,但我将我的设置为10秒.重要的是要注意,updatetime不仅仅是这样,所以在更改之前阅读文档.
function! SearchHlClear()
let @/ = ''
endfunction
augroup searchhighlight
autocmd!
autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END
Run Code Online (Sandbox Code Playgroud)
如果您希望能够快速启用/禁用突出显示,则可以将键映射到
" Press F4 to toggle highlighting on/off, and show current value.
:noremap <F4> :set hlsearch! hlsearch?<CR>
Run Code Online (Sandbox Code Playgroud)
只需将上面的代码片段放在.vimrc文件中即可.
这是我用一键击键显示和隐藏搜索亮点最方便的方式
有关更多信息,请查看文档http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
小智 6
我的猜测是,最初的问题不是禁用搜索突出显示,而是简单地清除上次搜索中的突出显示。原始海报提到的搜索乱码字符串的解决方案是我已经使用了一段时间来清除先前搜索中的突出显示的解决方案,但它既丑陋又麻烦。
我发现添加nnoremap ...到 ~/.vimrc 的几个建议在启动时将 vim 置于替换模式,这根本不是我想要的。我发现的最简单的解决方案是添加行
nmap <esc><esc> :noh<return>
Run Code Online (Sandbox Code Playgroud)
到我的 ~/.vimrc。这符合 KISS 原则并且不会干扰使用单个 <esc> 的箭头键。在命令模式下需要双 <esc>(或在插入或替换模式下需要三重 <esc>)来清除先前搜索中的突出显示,但从 UI 角度来看,这使操作尽可能简单。
结合2个最佳答案的另一个解决方案:
"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
Run Code Online (Sandbox Code Playgroud)