如何配置Vim使增量搜索高亮颜色与已确认搜索匹配颜色不同
实现Vim增量搜索与确认搜索的高亮区分
没问题,这个需求在Vim里完全可以通过内置选项+自定义高亮组轻松实现,完美匹配你描述的场景:已确认的搜索结果用一种颜色,输入过程中的增量搜索匹配用另一种颜色。
核心原理
Vim自带两个专门处理搜索状态的高亮组:
Search:对应已确认的搜索结果(按下回车后的匹配项)IncSearch:对应增量搜索过程中的临时匹配(输入/后还没按回车时的实时匹配)
同时需要开启两个基础选项激活对应功能:
incsearch:开启增量搜索(输入搜索内容时实时显示匹配)hlsearch:开启搜索结果的持久高亮
具体配置步骤
把下面的内容添加到你的~/.vimrc(Neovim用户则是~/.config/nvim/init.vim)文件中:
- 先开启必要的功能选项
" 开启增量搜索(输入时实时高亮匹配) set incsearch " 开启搜索结果的持久高亮 set hlsearch
- 自定义两个高亮组的颜色(可根据个人喜好调整)
" 已确认的搜索结果高亮(示例:黄底黑字,同时适配终端和GUI) highlight Search ctermbg=yellow ctermfg=black guibg=yellow guifg=black " 增量搜索时的临时高亮(示例:蓝底白字,终端用颜色名,GUI用十六进制色值) highlight IncSearch ctermbg=blue ctermfg=white guibg=#005fdf guifg=white
效果验证
按照你描述的场景测试:
- 正常模式下输入
/foo<回车>,此时所有foo会以Search组的颜色高亮 - 再输入
/bar(不按回车),此时实时匹配到的bar会以IncSearch组的颜色高亮,和已有的foo高亮完全区分开
小提示
- 如果你想临时关闭当前的搜索高亮,可以输入
:nohlsearch(或者简写:nohl) - 颜色值可自由调整:终端下支持常见颜色名(red/green/blue等),GUI下支持十六进制色值(比如
#ff0000代表红色)
内容的提问来源于stack exchange,提问作者user3133806




