我尝试突出显示光标所在的搜索结果之一,
我使用matchadd
,\%#
,@/
撰写正则表达式。
但我不知道。
以下是替代使用。
这就是我想要实现的目标。
答案 0 :(得分:1)
以下内容将突出显示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()