0

我尝试突出显示光标所在的搜索结果之一,并且

我用matchadd, \%#,编写正则表达式@/

但我对此一无所知。

以下是与替代品一起使用。

这就是我想要实现的。

在此处输入图像描述

4

1 回答 1

1

下面将使用定义的高亮组高亮当前搜索结果s:hl_groupn每当您按或时,它都会更新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()
于 2013-11-11T14:10:41.910 回答