要关闭高亮显示直到下一次搜索:
:noh
或完全关闭突出显示:
set nohlsearch
或者,要切换它:
set hlsearch!
nnoremap <F3> :set hlsearch!<CR>
我几年前在 vim.org 上找到了这个答案:
将以下内容添加到您的. vimrc 中:
"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>
因此,搜索后,只需在命令模式下再次按回车键,突出显示就会消失。
来自http://twitter.com/jonbho/status/2194406821
" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[
第二行是映射到转义键所必需的,因为 Vim 内部使用转义来表示特殊键。
我原来的解决方案(如下)既脏又浪费。我现在使用:noh
像 Vim 中的许多功能一样,正确的方法通常不容易发现。
-
(不要这样做)
搜索不太可能的字符序列(将主行上的键混在一起):
/;alskdjf;
这在 vim 中有效且更少,并且比 @ShaunBouckaert 的逻辑上更清洁的解决方案 “清除上次使用的搜索模式” 更容易记住 / 键入:
:let @/ = ""
潜在的弊端是它会在您的搜索记录中添加垃圾内容。
重新映射到我的. vimrc.local 文件中,既快捷又脏乱,但功能非常强大:
" Clear last search highlighting
map <Space> :noh<cr>
nnoremap <cr> :noh<CR><CR>:<backspace>
这样,在搜索后按Enter时,我便摆脱了命令行中显示的:noh
。
:就像开始输入新命令一样, Backspace清除它并将焦点重新放到编辑器窗口中。
提出:noh
或:nohlsearch
的答案(例如,Matt McMinn 的答案)对于暂时禁用搜索突出显示是正确的 - 如原始问题中所述。
我以为我会贡献一个在普通模式下有用的映射:
nnoremap <C-L> :nohlsearch<CR><C-L>
默认情况下,Vim 中的Ctrl L 会清除并重新绘制屏幕。许多命令行程序(大多数是使用GNU Readline 库的程序 ,例如 Bash)使用相同的组合键来清除屏幕。在后台运行的进程打印到终端,覆盖前台进程的某些部分的情况下,此功能很有用。
在重新绘制屏幕之前,此 “普通” 模式映射还清除了最近搜索词的突出显示。我发现这两个功能是相辅相成的,使用一个Ctrl L来同时执行两个操作而不是创建一个单独的映射来禁用搜索突出显示是很方便的。
注意:使用 noremap
而不是map
,否则映射将是递归的。
提示:我通常将Caps Lock重新映射为Ctrl ,以便更轻松地键入此类组合键;执行此操作的详细信息取决于您选择的 OS / 窗口系统(对于此答案而言,该主题是不正确的)。以下两个技巧均包含有关将Caps Lock映射到Ctrl以及Esc 的信息 :
我通常将:noh
映射到反斜杠键。要重新启用突出显示,只需按n ,它将再次突出显示。