我尝试突出显示光标所在的搜索结果之一,并且
我用matchadd
, \%#
,编写正则表达式@/
。
但我对此一无所知。
以下是与替代品一起使用。
这就是我想要实现的。
下面将使用定义的高亮组高亮当前搜索结果s:hl_group
。n
每当您按或时,它都会更新N
。它还定义了一个命令HlClear
,用于在您完成后清除突出显示。这可以称为:HlClear
。
" Set this to a group from :help highlight-default
let s:hl_group = 'ErrorMsg'
function! s:HlNext()
call s:HlClear()
let param = getreg('/')
let s:next_match = matchadd(s:hl_group, '\%#'.param)
redraw
endfunction
function! s:HlMatch()
let cmd_type = getcmdtype()
if cmd_type == '/' || cmd_type == '?'
return "\<cr>:call ".s:SID()."HlNext()\<cr>"
endif
return "\<cr>"
endfunction
function! s:HlClear()
silent! call matchdelete(s:next_match)
endfunction
function! s:SID()
return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID$')
endfun
nnoremap <silent> n n:call <sid>HlNext()<enter>
nnoremap <silent> N N:call <sid>HlNext()<enter>
cnoremap <silent> <expr> <enter> <sid>HlMatch()
command HlClear :call <sid>HlClear()