在Vim中进行搜索后,我突出显示了所有事件。我怎样才能禁用它?我现在再次搜索一些找不到的胡言乱语。
有没有一种方法可以暂时禁用高亮显示,然后在需要时再次启用?
在Vim中进行搜索后,我突出显示了所有事件。我怎样才能禁用它?我现在再次搜索一些找不到的胡言乱语。
有没有一种方法可以暂时禁用高亮显示,然后在需要时再次启用?
当前回答
几年前,我在vim.org上找到了这个答案:
将以下内容添加到.vimrc中:
"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>
因此,在搜索之后,只需在命令模式下再次单击return,突出显示就会消失。
其他回答
永久禁用搜索突出显示
每当您使用/
:set nohlsearch
清除突出显示,直到下一次搜索
:noh
或:nohlsearch(清除,直到按下n或n)
按ESC键时清除高亮显示
nnoremap <esc> :noh<return><esc>
按另一个键或自定义地图时清除高亮显示
按\(反斜杠)时清除突出显示nnoremap\:noh<return>两次按下ESC时清除高亮显示nnoremap<esc><esc>:否<return>
另外一个解决方案是结合两个顶级答案:
"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
基于@baruch偶数答案,您可以在正常模式下双击ESC删除搜索项,方法如下:
nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
来自VIM文档
要清除上次使用的搜索模式:
:let @/ = ""
这不会将模式设置为空字符串,因为这将匹配处处这种模式非常清晰,就像启动Vim时一样。
提出:noh或:nohlsearch(例如,Matt McMinn的)的答案对于暂时禁用搜索突出显示是正确的——正如最初的问题中所问的那样。
我想我会贡献一个在普通模式下有用的映射:
nnoremap <C-L> :nohlsearch<CR><C-L>
默认情况下,Vim中的CtrlL会清除并重新绘制屏幕。许多命令行程序(大多数是使用GNU Readline库的程序,如Bash)使用相同的组合键来清除屏幕。此功能在后台运行的进程打印到终端,覆盖前台进程的部分时非常有用。
此正常模式映射也会在重绘屏幕之前清除最近搜索词的突出显示。我发现这两个功能相辅相成,同时使用一个CtrlL来执行两个操作,而不是创建一个单独的映射来禁用搜索突出显示,这很方便。
注意:使用noremap而不是map,否则映射将是递归的。
提示:我通常将Caps Lock重新映射到Ctrl,以便更容易键入这样的组合键;这样做的细节取决于您对OS/窗口系统的选择(这个答案与主题无关)。以下两个提示都包含有关将Caps Lock映射到Ctrl和Esc的信息:
在XWindows中,地图大写锁定为转义在Windows中,地图大写锁定为转义