Vim清除最后的search高亮显示
在Vim中进行search后,我突出显示了所有的事件。 我如何禁用? 我现在再去search一些无法find的乱码。
有没有办法暂时禁用突出显示,然后在需要时重新启用?
要closures突出显示,直到下一个search:
:noh
或者完全closures高亮显示:
set nohlsearch
或者,切换它:
set hlsearch! nnoremap <F3> :set hlsearch!<CR>
来自VIM文档
清除上次使用的search模式:
:let @/ = ""
这不会将模式设置为空string,因为这将匹配到处。 模式真的被清除,就像启动Vim时一样。
你可以做
:noh
或者:nohlsearch
暂时禁用search突出显示,直到下一次search。
几年前我在vim.org上find了这个答案:
将以下内容添加到.vimrc中:
"This unsets the "last search pattern" register by hitting return nnoremap <CR> :noh<CR><CR>
因此,在search之后,只需在命令模式下再次返回,高亮消失。
从http://twitter.com/jonbho/status/2194406821
" Clear highlighting on escape in normal mode nnoremap <esc> :noh<return><esc> nnoremap <esc>^[ <esc>^[
第二行是映射到转义键所需的,因为Vim内部使用转义来表示特殊键。
search不太可能的字符序列(混搭主页上的键):
/;alskdjf;
这在vim和更less的工作,并且比@ ShaunBouckaert的逻辑清洁解决scheme“清除最后使用的search模式”更容易记住/types:
:let @/ = ""
一个潜在的缺点是,它会增加垃圾到您的search历史logging。
重新映射到我的.vimrc.local文件,快速,肮脏,但function非常强大:
" Clear last search highlighting map <Space> :noh<cr>
nnoremap <cr> :noh<CR><CR>:<backspace>
这样我就摆脱了:noh
在命令行中显示的:noh
,当search后按回车 。
:就像开始input一个新的命令一样, Backspace清除它并把焦点放回编辑器窗口。
我通常将映射到反斜杠键。 要重新启用突出显示,只需点击n ,它会再次突出显示。
提议的答案:noh
或:nohlsearch
(例如,Matt McMinn's)是正确的,用于暂时停用search突出显示 – 正如原始问题中所述。
我以为我会贡献一个映射,我发现有用的正常模式:
nnoremap <CL> :nohlsearch<CR><CL>
默认情况下,Vim中的Ctrl L清除并重画屏幕。 许多命令行程序(主要是那些使用GNU Readline库的程序 ,例如Bash)使用相同的组合键清除屏幕。 在后台运行的进程打印到terminal的情况下,该function非常有用,覆盖了前台进程的一部分。
此正常模式映射也会在重新绘制屏幕之前清除最近search词的高亮显示。 我发现这两个function相辅相成,使用一个Ctrl L来同时执行这两个操作,而不是创build一个单独的映射来禁用search高亮显示。
NB:使用 noremap
而不是map
,否则映射将是recursion的。
提示:我通常将Caps Lock重新映射到Ctrl ,以便于键入这些组合键; 这样做的细节取决于你select的操作系统/窗口系统(这个答案是脱离主题)。 以下提示都包含将Caps Lock映射到Ctrl以及Esc的信息 :
- 地图大小写locking在XWindows中转义
- 地图大小写locking在Windows中逃脱
永久禁用search高亮显示
匹配不会突出显示每当你使用/
:set nohlsearch
清除高亮显示,直到下一个search
:noh
或者:nohlsearch
(清除,直到n或N被按下)
按下ESC清除高亮显示
nnoremap <esc> :noh<return><esc>
按另一个键或自定义地图清除高亮显示
-
清除按下\ (反斜杠)
nnoremap \ :noh<return>
-
清除高亮按ESC两次
nnoremap <esc><esc> :noh<return>
这是我使用(从很多不同的问题/答案中提取):
nnoremap <silent> <Esc><Esc> :let @/=""<CR>
用“double” Esc删除突出显示,但只要再次search,突出显示就会再次出现。
另一种select:
nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>
根据vim文档:
clearmatches()
Clears all matches previously defined by |matchadd()| and the |:match| commands.
VIM和GVIM的Janus拥有许多像我这样的新手的烘焙产品
<leader>hs - toggles highlight search
这正是你所需要的。 只需在正常模式下input\hs
。 (默认情况下,引导键被映射到\
HTH。
要closures突出显示,直到下一个search
:noh
这会在更新时间毫秒之后清除search突出显示。
updatetime
默认为4000毫秒或4秒,但我把我的设置为10秒。 请注意,更新时间不仅仅是这样,所以在更改之前阅读文档。
function! SearchHlClear() let @/ = '' endfunction augroup searchhighlight autocmd! autocmd CursorHold,CursorHoldI * call SearchHlClear() augroup END
结合2个最佳答案的另一个解决scheme:
"To clear the last used search pattern: nnoremap <F3> :let @/ = ""<CR>
如果您希望能够快速 启用/禁用突出显示,则可以将密钥映射到
" Press F4 to toggle highlighting on/off, and show current value. :noremap <F4> :set hlsearch! hlsearch?<CR>
只需将上面的代码片段放到.vimrc文件中。
这是我用一个关键笔画显示和隐藏search高亮的最方便的方法
有关更多信息,请查阅文档http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
有两个“必须”插件:
- 明智的 –
Ctrl-l
为nohlsearch和重绘屏幕。 - 不受打击 –
[oh
,]oh
,控制hlsearch。
如果您安装了incsearch.vim插件 ,那么在search后会有一个设置自动清除高亮:
let g:incsearch#auto_nohlsearch = 1
我认为混合@ ShaunBouckaert和2009年3月19日在16:22答案是一个很好的妥协:
" Reset highlighted search nnoremap <CR> :let @/=""<CR><CR>
按Enter键 ,突出显示的文本不再突出显示,search突出显示仍处于启用状态。
您可以使用:noremap来打开/closuressearch结果,像这样
:noremap <F3> :set hls! hls?<CR>
我只是使用下面的简单nohl,并不需要插件。
:nohl
基于@ baruch-even回答,可以在正常模式下使用ESC双击删除search项:
nnoremap <esc> :let @/ = ""<return><esc> nnoremap <esc>^[ <esc>^[
我的猜测是,原来的问题不是禁用search高亮显示,而是简单地清除上次search中的高亮显示。 寻找原始海报中提到的乱码string的解决scheme,我已经使用了一段时间来清除以前的search中的突出显示,但是它很丑,很麻烦。
我发现将nnoremap ...
添加到〜/ .vimrc的一些build议在启动时会将vim置入replace模式,这并不是我想要的。 我find的最简单的解决scheme是添加行
nmap <esc><esc> :noh<return>
到我的〜/ .vimrc。 这是根据KISS原则进行的,并且不会干扰使用单个<esc>的箭头键。 在命令模式下(或者插入或replace模式下的triple- <esc>)需要双<esc>来清除之前search的高亮,但是从UI的angular度来看,这使得操作尽可能简单。
我在~/.vimrc
使用了以下内容
nnoremap <Leader><space> :noh<Enter>
这使得清除当前突出显示的search变得非常容易和快速。 我的领导者键被映射到\
所以这使得我的右手小指和拇指很容易执行操作。
而不是依靠一些编程到你的.vimrc文件(这不适用于其他安装)的键盘映射,只需使用这个黑客:重新search不可能的东西:
/asdfsddsdf
安装vim-cool 。 它被创build来解决这个特定的问题。 当你移动光标时,它将closures突出显示。